给定一个整数数组,判断是否存在重复元素。
如果存在一值在数组中出现至少两次,函数返回 true
。如果数组中每个元素都不相同,则返回 false
。
自己写:先对数组进行的冒泡排序(老长时间不写都要忘了),然后对排好序的数组遍历有没有和后一个数值相等的,有返回TRUE,否则返回FALSE
class Solution {
public static boolean containsDuplicate(int[] nums) {
boolean bool = true;
for(int i=0;i<nums.length-1;i++){
for(int j=0;j<nums.length-i-1;j++){
if(nums[j]>nums[j+1]){
int a = nums[j];
nums[j] = nums[j+1];
nums[j+1] = a;
bool = false;
}
}
if(bool == true){
break;
}
}
for(int i=0;i<nums.length-1;i++){
if(nums[i]==nums[i+1]){
return true;
}
}
return false;
}
}
但是:这也太差了
看看解析:
首先:
(1)java中有Arrays.sort(nums)现成的排序方法!!
(2)哈希表中不仅仅只有hashmap,还有hashSet呀!!!我用的hashMap存储键值对,超时了。。。
使用HashSet:直接不用取出所有的value值,在contains看有没有,直接用HashSet,能插进去就不重复啊!
class Solution {
public boolean containsDuplicate(int[] nums) {
HashSet<Integer> set = new HashSet<>();
for(int i=0;i<nums.length;i++){
if(!set.add(nums[i])){
return true;
}
}
return false;
}
}
还是要多做题,开阔思路啊,不怕不会做,就怕不做啊!!又是好长时间没有做了,要坚持下来呀,要分清孰轻孰重啊,别被作业就整天弄得忙不开,作业次要,这些才是找工作用到的呀!
提高效率,分清主次!!