leetcode初级算法题-存在重复
题目:
给定一个整数数组,判断是否存在重复元素。
如果任何值在数组中出现至少两次,函数返回 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
解题思路(C):
首先想到的是两层for循环,以此判断两两是否相等,但提交时,超出时间限制
代码:
bool containsDuplicate(int* nums, int numsSize) {
int i, j;
int repeat = 0;
for(i=0;i<numsSize;i++){
for(j=0;j<numsSize;j++){
if((nums[i]==nums[j])&&(i!=j))
repeat = 1;
}
}
if(repeat)
return true;
else
return false;
}
改进一下:去掉重复比较
第0个元素和后面的1到n个元素比较
第1个元素和后面的2到n个元素比较
代码:
bool containsDuplicate(int* nums, int numsSize) {
int i, j;
int repeat = 0;
for(i=0;i<numsSize;i++){
for(j=i+1;j<numsSize;j++){
if(nums[i]==nums[j])
repeat = 1;
}
}
if(repeat)
return true;
else
return false;
}
解题思路(python):
python的counter,统计值出现的次数
例子:
import collections
test = collectionsCounter("abcdefgabc")
print(test)
#输出每个字符出现的次数
代码:
import collections
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
num_result = collections.Counter(nums)
for value in num_result.values():
if value >= 2:
return True
return False
参考:
1、leetcode刷题--基础数组--判断存在重复(C) https://blog.****.net/qq_28266311/article/details/82989456
2、python的collection系列-counter https://www.cnblogs.com/repo/p/5422041.html
3、Leetcode——存在重复元素——python3 https://blog.****.net/lzw369639/article/details/82814056