- 先分别求出最大值和最小值
- 注意代码中的一次遍历的技巧
在利用最大值和最小值建立哈希表。可大幅减小哈希表所用的空间;
class Solution {
public boolean containsDuplicate(int[] nums) {
int max = nums[0];
int min = nums[0];
for (int num : nums) { //一次遍历找出最大值和最小值
if (max < num) {
max = num;
} else if (min > num) {
min = num;
}
}
boolean[] arr = new boolean[max - min + 1];
for (int num : nums) {
if (arr[num - min]) {
return true;
} else {
arr[num - min] = true;
}
}
return false;
}
}
该博客介绍了一种高效的算法,通过一次遍历来找出整数数组中的重复元素。首先找到数组的最大值和最小值,然后创建一个大小为最大值与最小值之差加一的布尔哈希表。遍历数组,将每个元素作为索引存入哈希表,若已存在则说明有重复,返回true;反之,插入并继续检查。这种方法减少了哈希表的空间占用。
2426

被折叠的 条评论
为什么被折叠?



