当前位置: 首页 > news >正文

横琴新区公共建设局网站哈尔滨网络公司招聘

横琴新区公共建设局网站,哈尔滨网络公司招聘,做网站一般图片多大,长沙部分小区封控239. 滑动窗口最大值给你一个整数数组 nums#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。我的解法会超时#xff0c;就比最暴力解法优化了一点点吧…239. 滑动窗口最大值给你一个整数数组 nums有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。我的解法会超时就比最暴力解法优化了一点点吧。能通过49/51。 思路就是左右指针中间的是窗口。记录当前窗口的最大值窗口滑动一下原来左指针的值出去了新的右指针的值进来了。其实就变了两个数。就比较下新进来这个数比最大值大还是小大的话就成为新的最大值。出去这个数比较麻烦如果出去的是最大值的话就要重新比较当前整个窗口找到新的最大值。就是这一步引入了第二重循环导致会超时。 贴一下我的代码 class Solution {public int[] maxSlidingWindow(int[] nums, int k) {if (nums.length 0) {return new int[0];}int[] res new int[nums.length - k 1];int max nums[0];for (int i 0; i k; i) {if (nums[i] max) {max nums[i];}}res[0] max;for (int i 1; i nums.length - k 1; i) {int j k i - 1;if (nums[j] max) {max nums[j];} else if (max nums[i - 1]) {max nums[i];for (int g i; g j; g) {max Math.max(nums[g], max);}}res[i] max;}return res;} }我只看了官方解法一困难档次的题我就不追求优化了。 解法一其实和我的想法一样但是为了不超时那个两重循环必须去掉。第二重循环其实就是为了找比大小。堆排序是可以降低时间复杂度的所以就用了Java里的优先队列用了比较器之后可以看做一个大顶堆。这个堆的每个节点是int[2]的类型int[0]是节点的值int[1]是节点在数组中的下标。这个下标记录下来就是为了实现如果左指针指的是滑动窗口的最大值滑一下就找不到最大值的这种情况。当发生这种情况时就把堆顶移出去也就是左指针指的那个。移出去之后会自动构建新的大顶堆直接就找到新的最大值了。注意这种解法堆里面的元素并不一直是k个它里面有多少元素根本不关心只关心当前的最大值和最大值是否还在滑动窗口里面。所以它在移除滑动窗口之外的数据时用的while循环因为可能第一大的节点和第二大的节点都还在堆里但是已经在滑动窗口之外了。 大顶堆是这样定义的Java的比较器我也不太会。记一下对于优先队列O1-O2是默认的从小到大O2-O1是从大到小。这里用的int[]的数据类型用的pair2-pair1就是从大到小。先按元素值从大到小pair2[0] - pair1[0]。如果元素值相等再按元素下标从大到小pair2[1] - pair1[1] PriorityQueueint[] pq new PriorityQueueint[](new Comparatorint[]() { public int compare(int[] pair1, int[] pair2) { return pair1[0] ! pair2[0] ? pair2[0] - pair1[0] : pair2[1] - pair1[1]; } }); 再记一下PriorityQueue的几个方法添加元素offer, 获取堆顶元素peek, 弹出堆顶元素poll. public int[] maxSlidingWindow(int[] nums, int k) {int n nums.length;PriorityQueueint[] pq new PriorityQueueint[](new Comparatorint[]() {public int compare(int[] pair1, int[] pair2) {return pair1[0] ! pair2[0] ? pair2[0] - pair1[0] : pair2[1] - pair1[1];}});for (int i 0; i k; i) {pq.offer(new int[]{nums[i], i});}int[] ans new int[n - k 1];ans[0] pq.peek()[0];for (int i k; i n; i) {pq.offer(new int[]{nums[i], i});while (pq.peek()[1] i - k) {pq.poll();}ans[i - k 1] pq.peek()[0];}return ans;} }作者力扣官方题解 链接https://leetcode.cn/problems/sliding-window-maximum/solutions/543426/hua-dong-chuang-kou-zui-da-zhi-by-leetco-ki6m/ 来源力扣LeetCode 著作权归作者所有。商业转载请联系作者获得授权非商业转载请注明出处。
http://www.pierceye.com/news/700688/

相关文章:

  • 温州在线课堂番禺网站建设优化
  • php怎么做网站快大都会app下载最新版本
  • 麻城网站建设公司网络推广公司挣钱吗
  • t型布局网站的样子自己做的网站如何上传
  • 排版设计模板网站百度搜索下载安装
  • 网站页面建设需要ps吗网站建设结单 优帮云
  • 网站建设对我有什么好处网站首页被k 做跳转
  • 美辰网站建设网站建设公司转型做什
  • 创意网站界面怎么查注册公司的名字可不可以用
  • 微友说是做网站维护让帮忙投注中小企业经营管理培训班
  • 网站开发宣传标语虚拟币挖矿网站开发
  • wordpress是否免费网站移动端seo
  • 加盟网站建设服务极简风格 wordpress
  • phpcms v9 网站模板seo优化的技巧
  • 域名备案网站要不要关7k7k网页游戏
  • 虚拟主机发布网站吗汕头建站平台
  • wap站是什么意思啊阿里云建设网站的步骤
  • 网站备案 异地可以做视频的网站
  • 淘宝网站c 设计怎么做安卓手机做网站
  • 嘉兴做网站建设的公司电商网名大全
  • 欢迎访问中国建设银行网站密码重置wordpress wp_parse_args
  • 普通电脑可以做网站服务器吗找人做网站需要什么条件
  • 长沙公司网站的建设网站图片尺寸
  • 高端网站定制费用是多少php网站建设制作
  • 广州营销型网站建设费用wordpress最新版下载
  • 洛阳网站设计公司xiamiplayer for wordpress
  • 做网站模版形象墙logo墙设计图
  • 视频网站怎么做防盗链好的装修效果图网站
  • 个人音乐分享网站源码移动网站建设的前景
  • 谷歌自建站和优化网站有很多304状态码