publicintfindLHS(int[] nums){ Arrays.sort(nums); int len = nums.length; int left = 0; int ans = 0; for (int right = 0; right < len; right++) { while (nums[right] - nums[left] > 1) { left++; }
if (nums[right] - nums[left] == 1) { ans = Math.max(ans, right - left + 1); } }
publicintfindLHS(int[] nums){ int len = nums.length; int ans = 0; Map<Integer, Integer> freq = new HashMap<>(); for (int x : nums) { freq.put(x, freq.getOrDefault(x, 0) + 1); }
Map<Integer, Integer> has = new HashMap<>(); for (int i = 0; i < len; i++) { has.put(nums[i], has.getOrDefault(nums[i], 0) + 1); if (freq.getOrDefault(nums[i] + 1, 0) == 0 && freq.getOrDefault(nums[i] - 1, 0) == 0) { continue; } int plus = freq.get(nums[i]) - has.get(nums[i]) + 1 + freq.getOrDefault(nums[i] + 1, 0) - has.getOrDefault(nums[i] + 1, 0); int minus = freq.get(nums[i]) - has.get(nums[i]) + 1 + freq.getOrDefault(nums[i] - 1, 0) - has.getOrDefault(nums[i] - 1, 0); ans = Math.max(ans, Math.max(plus, minus)); }
publicintfindLHS(int[] nums){ int ans = 0; Map<Integer, Integer> freq = new HashMap<>(); for (int x : nums) { freq.put(x, freq.getOrDefault(x, 0) + 1); }
for (int x : nums) { if (freq.getOrDefault(x + 1, 0) == 0 && freq.getOrDefault(x - 1, 0) == 0) { continue; } int plus = freq.get(x) + freq.getOrDefault(x + 1, 0); int minus = freq.get(x) + freq.getOrDefault(x - 1, 0); ans = Math.max(ans, Math.max(plus, minus)); }
publicintfindLHS(int[] nums){ int ans = 0; Map<Integer, Integer> freq = new HashMap<>(); for (int x : nums) { freq.put(x, freq.getOrDefault(x, 0) + 1); }
for (int key : freq.keySet()) { if (freq.containsKey(key + 1)) { int temp = freq.get(key) + freq.get(key + 1); ans = Math.max(ans, temp); } }