594. 最长和谐子序列

解题思路

1. 统计每个元素出现次数

2. 找到两个数的绝对值差为1,并记下次数和

3. 重复2步骤

代码


class Solution {

    public int findLHS(int[] nums) {

       if(nums == null || nums.length ==0){

            return 0;

        }

        Map<Integer, Integer> map=new HashMap<>();

        for (int i=0;i<nums.length;i++){
              map.put(nums[i], map.getOrDefault(nums[i], 0) + 1);
        }

        int length = 0;

        for (int i=0; i < nums.length; i++) {

            for (int j=i+1; j < nums.length; j++) {

                if(Math.abs(nums[j] - nums[i]) == 1){

                    int sum = map.get(nums[j]) + map.get(nums[i]);

                    if(sum > length){

                        length = sum;

                    }

                }

            }

        }

        return length;

    }

}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!