存在重复的元素

此博客链接:https://www.cnblogs.com/ping2yingshi/p/12859215.html

存在重复的元素(42min)

题目链接:https://leetcode-cn.com/problems/contains-duplicate/submissions/

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

如果任意一值在数组中出现至少两次,函数返回 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

题解:

一开始我想着想建一个数组,把给的数组中的数字作为新数组的下标,遍历数组,重复的数字就会使新数组的在此下标下数值和大于等于2,可是数组大小不确定。

       集合思路:

                     1.使用集合过滤重复的数字。

                     2.如果集合的长度和数组的长度相等,就说明没有重复数字。

                     3.如果集合长度和数组长度不相等,就说明有相等的元素。

代码如下:

class Solution {
    public boolean containsDuplicate(int[] nums) {
        int len=nums.length;
        if(len==1)
           return false;
      Set<Integer>  set=new HashSet<>();
        for(int i=0;i<len;i++)
             set.add(nums[i]);
       if(len==set.size())
          return false;
        else
         return true;
    }
}

 排序思想:先把数组排序,如果有重复的数字,那么相邻的数字一定相等。(但是超时)

  代码如下:

class Solution {
    public boolean containsDuplicate(int[] nums) {
        int len=nums.length;
        if(len==1)
        return false;
        int k=0;
        for(int i=0;i<len-1;i++)
        {
            k=i;
            for(int j=i;j<len;j++)
            {
                if(nums[k]>nums[j])
                {
                    k=j;
                }
            }
            int temp;
            temp=nums[i];
            nums[i]=nums[k];
            nums[k]=temp;
        }
         for(int i=0;i<len-1;i++)   
             if(nums[i]==nums[i+1])
                return true;
        return false;
    }
}
原文地址:https://www.cnblogs.com/ping2yingshi/p/12859215.html