594. 最長和諧子序列

zyfsuzy發表於2020-02-12

解題思路

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 協議》,轉載必須註明作者和本文連結

相關文章