LeetCode 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
思路:
根据题意,需要判断所给数组中是否含有相同的数字。个人有以下三种思路,仅供参考:
- 先对所给数组进行排序,然后对排序后的数组进行相邻两个值的比较,如果遍历到数组结尾,任然没有两个相邻的相同值,则说明所给数组中没有相同元素。(本思路代码见下方)
- 使用桶排序思想,使用辅助数组flag[ ],初始置数组为0;然后通过遍历所给数组,判断flag[ nums[i] ] == 0 ** 时,置flag[ nums[i] ] == 1 ;判断flag[ nums[i] ] == 1 ** 时,说明有相同元素。
- 使用两层循环,对数组进行遍历。
代码:
class Solution {
public:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(), nums.end());
int flag = 1;
for( int i = 0; i < nums.size()-1 ; i++){
if(nums[i] == nums[i+1]){
flag = 0;
return true;
}
}
return false;
}
};