LeeCode数组算法-存在重复

1.可以利用Java自带的Arrays.sort()方法先对数组进行排序,排序之后只需对相邻两个数字进行判断是否相等就可以知道是否存在重复;或者用set.contains()方法进行判断

2.遍历一次数组,遍历过程中,将每次遍历的数组元素按升序放到它相应的位置,那么这个元素必然>=它之前的元素。然后比较该元素与前一个元素是否相等。如果相等,则说明包含重复的元素。

class Solution {
    public boolean containsDuplicate(int[] nums) {
        int len=nums.length;
        if(len==0) return false;
        for(int i=1;i<len;i++){
            int j=i-1;
            int temp=nums[j+1];
            while(j>=0&&nums[j]>temp){
               nums[j+1]=nums[j];
                j--;  
            }
            nums[j+1]=temp;
            if(j>=0&&nums[j]==nums[j+1]){
                return true;
            }
        }
        return false;
    }   
}

3.如果对时间复杂度和空间复杂度没有要求的话,就直接使用二重循环进行遍历,时间复杂度为O(n^2);若果想要降低时间复杂度,可以定义一个大小为n的向量用于记录数组元素出现的次数进行判断,空间复杂度为O(n);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值