LeetCode 594. 最长和谐子序列
题目描述
思路分析
解法一:哈希计数(推荐)
核心思路:
- 统计每个数字的出现次数。
- 只需检查相邻数值
x与x+1的组合。- 取出现次数之和的最大值即可。
复杂度分析:
- 时间复杂度:O(n),其中 n 表示数组长度。
- 空间复杂度:O(n),用于哈希表。
import java.util.HashMap;
import java.util.Map;
class Solution {
public int findLHS(int[] nums) {
Map<Integer, Integer> count = new HashMap<>();
for (int num : nums) {
count.put(num, count.getOrDefault(num, 0) + 1);
}
int res = 0;
for (int num : count.keySet()) {
if (count.containsKey(num + 1)) {
res = Math.max(res, count.get(num) + count.get(num + 1));
}
}
return res;
}
}
func findLHS(nums []int) int {
count := make(map[int]int)
for _, num := range nums {
count[num]++
}
res := 0
for num, c := range count {
if v, ok := count[num+1]; ok {
if c+v > res {
res = c + v
}
}
}
return res
}
相似题目
| 题目 | 难度 | 考察点 |
|---|---|---|
| 128. 最长连续序列 | 中等 | 哈希 |
| 532. 数组中的 k-diff 数对 | 中等 | 哈希 |
| 217. 存在重复元素 | 简单 | 哈希 |
| 219. 存在重复元素 II | 简单 | 哈希 |
| 349. 两个数组的交集 | 简单 | 哈希 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!
