算法面试题
文章平均质量分 52
Vigor377
这个作者很懒,什么都没留下…
展开
-
【Vigor】leetcode刷题 -- 347. 前 K 个高频元素(java)
题目:题意理解:依据题意,可知是给定一个数组,且给定一个数值 k ,要求数组中重复元素最多的前 k 个元素。解题思路:最开始的想法很粗暴:遍历数组,且创建一个map集合,键来存储数组元素,值则存储对应键出现的频率。最后通过每遍历一次map集合来求出一个中中最大值,同时删去该键。这种想法确实简单粗暴,但是这样的做法因为多次遍历map集合来取得最大值,他的算法时间复杂度肯定远大于 n*n 。而且看了看后面的提示:**你的算法的时间复杂度必须优于 O(n log n) , n 是数组的大小。**原创 2021-03-10 15:31:36 · 204 阅读 · 0 评论 -
【Vigor】leetcode刷题 -- 剑指 Offer 59 - I. 滑动窗口的最大值(java)【暴力解法】
题目:题意理解:依据题意,假设有一个窗口,这个窗口中包含 k 个元素,在从左往右逐一遍历这组数据的同时,你需要分别求出这个窗口中 k 个元素中的最大值。解题思路:根据题目要求,我们可以设定一个可存 k 个元素的数组 slide ,用来存储窗口元素,通过每一次求出每个窗口中元素的最大值,且每一次改变窗口中元素的各个值,即可达到这个目的。代码:public int[] maxSlidingWindow(int[] nums, int k) { int[] slide = new i原创 2021-03-06 20:18:20 · 157 阅读 · 0 评论 -
【Vigor】leetcode刷题 -- 739. 每日温度(java)
题目:题意理解:依据题意,需要查找到下一个温度更高的日子距当前有多少天比如有三天温度:73 56 74 ,则距 73 后 74 比其温度更高,而 73 之后需要等待 2 天才到 74 ,所以 73 对应的数组值为 2 .解题思路:我们可以遍历一遍所给的温度数组,因为遍历过的元素可能对后面的元素产生影响,所以可以考虑使用 栈 这种数据结构进行解题。在遍历的过程中,我们存储在栈中的值为该元素的数组下标。当当前元素比栈顶元素大,则证明找到了至少一个温度升高的“迹象”,则将栈顶元素取原创 2021-03-05 18:40:46 · 309 阅读 · 0 评论 -
【Vigor】leetcode刷题 -- 242.有效的字母异位词(java)
题目:题意理解:异位词:长度一样,包含的字母都一样,每个字符出现的频率也一样,只是顺序不同,即称异位词。说明中说假设字符中只含小学字母:不用考虑字母的大小写问题和其他字符。解题思路:因为只含小写字母,而小写字母只有26个,所以可以创建一个长度为26的数组,通过遍历字符串来记录遇到的字母次数。遍历第一个字符串,将遍历到的字符的对应位置上+1,如遇到 a 字符,则 arr[0]++,遇到 b 字符,则arr[1]++…遍历第二个字符串,相反的,将遍历到的字符的对应位置上-1,如遇到 a 字符原创 2021-03-04 13:16:36 · 215 阅读 · 1 评论