剑指第3题
自己的笨办法,双重for循环,时间复杂度为O(n的平方)
class Solution {
public int findRepeatNumber(int[] nums) {
for (int i = 0; i < nums.length ; i++) {
for (int j = i + 1; j < nums.length ; j++) {
if (nums[i] == nums[j]) {
return nums[j];
}
}
}
return -1;
}
}
用hash表解决
- 注意代码的顺序,先往set里面添加
class Solution {
public int findRepeatNumber(int[] nums) {
//用hash表来解决
HashSet<Integer> set = new HashSet<>();
for (int i = 0; i < nums.length; i++) {
if (set.contains(nums[i])) {
return nums[i];
}
set.add(nums[i]);
}
return -1;
}
}
可以直接进行排序,看前一个数和后一个数进行比较,如果相等,直接就返回值.