LeetCode Java 刷题之 217. 存在重复元素

LeetCode 链接:https://leetcode-cn.com/problems/contains-duplicate/

217. 存在重复元素

难度  简单

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

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

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

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

 提示:

  • 1 <= nums.length <= 105
  • -109 <= nums[i] <= 109

通过次数511,166提交次数918,539

 

  • 2022.3.18日提交如下java程序: 

复制代码
1 class Solution {
2     public boolean containsDuplicate(int[] nums) {
3         for (int i=0; i<=nums.length-2; i++) 
4             for (int j=i+1; j<=nums.length-1;j++) 
5                 if(nums[i]== nums[j])
6                     return true;
7         return false;
8     }
9 }
复制代码

编译运行都结果正确。

提交时却提示:

提交记录
70 / 69 个通过测试用例
状态:超出时间限制

估计是算法复杂度为On^2),不符合题目要求, 最后一个用例的运行时间超出限制。

 

  •  改用java自带的sort(是quicksor排序?)先给数组排序,然后再前后挨个比较,发现有相等,则返回true

复制代码
 1 import java.util.*;
 2 class Solution {
 3     public boolean containsDuplicate(int[] nums) {
 4         Arrays.sort(nums);
 5         for (int i=0; i<nums.length-1; i++) 
 6                 if(nums[i]== nums[i+1])
 7                     return true;
 8         return false;
 9     }
10 }
复制代码

 

执行结果:通过

执行用时:19 ms, 在所有 Java 提交中击败了24.01%的用户

内存消耗:55.4 MB, 在所有 Java 提交中击败了5.08%的用户

通过测试用例:70 / 70

 

修改 import java.util.*;  为 import java.util.Arrays; 后

 

执行结果:通过

执行用时:19 ms, 在所有 Java 提交中击败了24.01%的用户

内存消耗:54.3 MB, 在所有 Java 提交中击败了16.43%的用户

通过测试用例:70 / 70

 

  • 下一步改进思路,自己用java写个quicksort排序,会否改进程序的运行复杂度?

posted @   blues667  阅读(121)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示