0
点赞
收藏
分享

微信扫一扫

力扣刷题第一题

给定一个整数数组,判断是否存在重复元素。

如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。

 

示例 1:

输入: [1,2,3,1]
输出: true
示例 2:

输入: [1,2,3,4]
输出: false
示例 3:

输入: [1,1,1,3,3,4,3,2,4,2]
输出: true

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/contains-duplicate
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

这道题有俩种解体方法或者思路:
1.排序,就是从小到大排序,排完序后,然后相邻的俩个就进行比较是不是相等,相等就返回true,否则返回false
代码如下:

public class CountTest {
   public   boolean  CountArray(int  [] num ){
       Arrays.sort(num);
       int  n=num.length;
       for (int  i=0;i<n-1;i++){
           if (num[i]==num[i+1]){
               return  true;
           }
       }
       return  false;
   }
}

2.哈希表
通过哈希,如果你已经把这个元素添加到哈希中去了,如果再添加相同的元素,就可以检查出来了
代码如下:

public   class   CountTest{
    public   boolean  CountArray(int [] num){
        HashSet<Integer> set = new HashSet<>();
        for (int x:num){
            if (!set.add(x)){//HashSet中如果存在这个数,在加入这个数,返回false,在前加一个!if得以执行,返回true,说明存在重复元素
                return  true;
            }
        }
        return false;
    }
}

其实刷题,重点实在理解一种思想,一种解决类似的问题的思想
说白了就是一种规律,知识不是信息,学习不是记忆!

举报

相关推荐

0 条评论