精品推荐:
《征服数据结构》专栏:50多种数据结构彻底征服
《经典图论算法》专栏:50多种经典图论算法全部掌握
一网友发文称面试了一家小公司,目前公司是20k,期望薪资是25k,hr说可以,入职后还可以做前端leader,结果过了两天谈薪的时候老板决定给开15k。
这简直就是侮辱人,985硕士五年工作经验,还要做前端leader,就给15k,leader才给15k,手下的带的难道都是一群应届毕业生?啥牛马公司都有。
--------------下面是今天的算法题--------------
来看下今天的算法题,这题是LeetCode的第217题:存在重复元素。
问题描述
来源:LeetCode第217题
难度:简单
给你一个整数数组 nums 。如果任一值在数组中出现至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
示例1:
输入:nums = [1,2,3,1]
输出:true
示例2:
输入:nums = [1,2,3,4]
输出:false
1 <= nums.length <= 10^5
-10^9 <= nums[i] <= 10^9
问题分析
这题让判断数组中是否有重复的元素,很简单的一道题,可以使用set集合判重,把数组中的元素一个个放到集合set中,存放的时候如果有重复的直接返回true。
JAVA:
public boolean containsDuplicate(int[] nums) {
Set<Integer> st = new HashSet<>();
for (int num : nums)
if (!st.add(num))// 有重复的直接返回true
return true;
return false;
}
C++:
public:
bool containsDuplicate(vector<int> &nums) {
unordered_set<int> s;
for (const auto &num: nums)
if (!s.insert(num).second)// 有重复的直接返回true
return true;
return false;
}
Python:
def containsDuplicate(self, nums: List[int]) -> bool:
s = set()
for num in nums:
if num in s: # 有重复的直接返回true
return True
s.add(num)
return False
笔者简介
博哥,真名:王一博,毕业十多年,《算法秘籍》作者,专注于数据结构和算法的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解800多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以下载我整理的1000多页的PDF算法文档。
数组,稀疏表(Sparse Table),单向链表,双向链表,块状链表,跳表,队列和循环队列,双端队列,单调队列,栈,单调栈,双端栈,散列表,堆,字典树(Trie树),ArrayMap,SparseArray,二叉树,二叉搜索树(BST),笛卡尔树,AVL树,树堆(Treap),FHQ-Treap
……
图的介绍,图的表示方式,邻接矩阵转换,广度优先搜索(BFS),深度优先搜索(DFS),A*搜索算法,迭代深化深度优先搜索(IDDFS),IDA*算法,双向广度优先搜索,迪杰斯特拉算法(Dijkstra),贝尔曼-福特算法(Bellman-Ford),SPFA算法,弗洛伊德算法(Floyd)
……