当前位置: 首页 > 图灵资讯 > 技术篇> 代码随想录算法训练营第十三天|● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 ● 总结

代码随想录算法训练营第十三天|● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 ● 总结

来源:图灵教育
时间:2023-06-07 09:40:19

239. 滑动窗口的最大值

扣除主题链接(opens new window)

给定一个数组 nums,有一个大小为k的滑动窗口从数组的最左边移动到数组的最右边。您只能在滑动窗口中看到 k个数字。滑动窗口每次只向右移动一个。

返回滑动窗的最大值。

进阶:

你能在线性时间复杂性内解决这个问题吗?

代码随想录算法训练营第十三天|● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 ● 总结_数组

提示:

  • 1 <= nums.length <= 10^5
  • -10^4<= nums[i]<= 10^4
  • 1 <= k<= nums.length

思路:

难题,看完视频思路还是不懂,暂时放。

347.前 K 个高频元素

扣除主题链接(opens new window)

给定一个非空整数组,返回到频率之前 k 高的元素。

示例 1:

  • 输入: nums = [1,1,1,2,2,3] k = 2
  • 输出: [1,2]

示例 2:

  • 输入: nums = [1], k = 1
  • 输出: [1]

提示:

  • 你可以假设给定 k 总是合理的,而且 1 ≤ k ≤ 数组中不同元素的数量。
  • 你的算法必须比时间更复杂 $O(n \log n)$ , n 是数组的大小。
  • 题目数据保证答案是唯一的,换句话说,在数组中 k 高频元素的集合是唯一的。
  • 您可以按任何顺序返回答案。

思路:

用map记录每个元素的出现频率,然后用优先级队列对出现频率进行排序。暂放。

总结

需要掌握单调队列和优先队列,回头看看。