标签:存在 lan 开始 复数 数值 blog add lse dup
此博客链接: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; } }
标签:存在 lan 开始 复数 数值 blog add lse dup
原文地址:https://www.cnblogs.com/ping2yingshi/p/12859215.html