217给定一个整数数组,判断是否存在重复元素
最近开始刷leetcode,随便记录一些笔记。
- 超暴力循环嵌套解法(超出时间限制)
class Solution {
public boolean containsDuplicate(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 true;
}
}
}
return false;
}
}
- 利用HashSet 元素不可重复性(个人比较偏爱的一种写法)
class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> res = new HashSet<Integer>();
for(int i:nums){
if(!res.add(i)){
return true;
}
}
return false;
}
}
Java 集合类中的 Set.add() 方法用来向 Set 集合添加对象。如果 Set 集合中已经包含相同的对象,则不改变 Set 集合。该方法返回值为 boolean 对象,如果 Set 集合中不包含要添加的对象,则添加对象并返回 true,否则返回 false。
3.排序
class Solution {
public boolean containsDuplicate(int[] nums) {
Arrays.sort(nums);
for (int i = 0; i < nums.length - 1; i++) {
if (nums[i] == nums[i + 1]) {
return true;
}
}
return false;
}
}
在对数字从小到大排序之后,数组的重复元素一定出现在相邻位置中。