文章目录
序言
虽然算法很难,但不应该就放弃。这是一个学习笔记,希望你们喜欢
先自己尝试写,大概十几分钟仍然写不出来
看思路,再尝试跟着思路写
仍然写不出来,再看视频
b站up视频推荐:爱学习的饲养员
leetcode其他文章:
数组篇:
从小白开始刷算法 数组篇 leetcode.485
从小白开始刷算法 数组篇 leetcode.283
从小白开始刷算法 数组篇 leetcode.27
链表篇:
从小白开始刷算法 ListNode 链表篇 leetcode.203
从小白开始刷算法 ListNode 链表篇 leetcode.206
队列篇
从小白开始刷算法 ListNode 链表篇 leetcode.933
栈篇
从小白开始刷算法 Stack 栈篇 leetcode.20
从小白开始刷算法 Stack 栈篇 leetcode.496
哈希篇
难度:简单
题目:
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题目来源:力扣(LeetCode)
哈希表解决思路
能否写出:能写出来
时间:10分钟之内
思路:
用哈希表不能有重复的特性直接完成了
// 仅是我的思路代码,leetcode上大神更厉害
class Solution {
public boolean containsDuplicate(int[] nums) {
HashSet<Integer> set = new HashSet<>();
for (int num : nums) {
if(!set.isEmpty()&&set.contains(num)){
return true;
}
set.add(num);
}
return false;
}
}
时间复杂度:O(n) nums长度
空间复杂度:O(n) nums长度
还有其他的思路解决,这里我就不列举代码了
- 暴力解决 没什么是循环解决不了的,有就加多一个循环的。(╯°Д°)╯︵ ┻━┻
- 思路:使用两层循环遍历数组,对每对元素进行比较,判断是否存在重复。时间复杂度为O(n^2)
- 排序解决
- 思路:先对数组进行排序,然后遍历数组,判断相邻元素是否相等。如果存在相等元素,则说明存在重复。时间复杂度取决于排序算法的复杂度,通常为O(nlogn),且不需要额外的空间。