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

做一个简单的网站要多少钱黄金网站app在线观看下载10

做一个简单的网站要多少钱,黄金网站app在线观看下载10,长春h5建站,二建报考报名入口java数据结构与算法刷题目录#xff08;剑指Offer、LeetCode、ACM#xff09;-----主目录-----持续更新(进不去说明我没写完)#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 1. 法一#xff1a;指针法 解题思路 我们以每一个窗口来看#xff0c;找…java数据结构与算法刷题目录剑指Offer、LeetCode、ACM-----主目录-----持续更新(进不去说明我没写完)https://blog.csdn.net/grd_java/article/details/123063846 1. 法一指针法 解题思路 我们以每一个窗口来看找到每个窗口的最大值那么找到最大值后会面临一些情况。就是窗口滑动后会从左边少一个元素右边多一个元素首先如果右边多出来的比当前最大值大的话那它一定是新的最大值。因为上一次窗口中最大为max。而新加了一个右边的比max大那么右边这个就是最大的如果右边的没有当前max大。那么就考虑左边如果左边少了一个后新的最左边结点和max一样那么左边这个就是新最大值如果刚好上一次的max在滑动窗口后不在窗口范围了那么没办法只能遍历窗口元素找到新的最大值 代码时间复杂度O(n),空间复杂度O(1) class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int left 0;//滑动窗口左边界int right k - 1;//滑动从窗口右边界int maxIndex -1;//max元素下标int max Integer.MIN_VALUE;//max - 1 Integ.MAX_VALUE;int[] res new int[nums.length - k 1];//结果数组while (right nums.length) {//还可以滑动就继续if (maxIndex left) {//如果max在left右边if (nums[right] max - 1) {//判断是否新添加元素maxmaxIndex right;//如果right新元素max就让max指向rightmax nums[maxIndex];}} else if (nums[right] max - 1) {//如果max不在left右边但是新添加元素刚好maxmaxIndex right;//那么right一定新窗口是最大值因为max是旧窗口的最大值max nums[maxIndex];}else if (nums[left] max - 1 ) {//如果max不在left右边而且right不是最大值那么看看left是否是最大值maxIndex left;//区域减少了一个值添加一个rightright不是最大值那就看看left是不是最大值max nums[left];//是就让max指向left}else {//上面条件都不成立最大值既不是right也不是left而是在中间的话。就只能循环找了maxIndex left;max nums[maxIndex];for (int i left 1; i right; i) {if (nums[i] max - 1) {maxIndex i;max nums[maxIndex];}}}res[left] max;//每次都保存最大值left;//滑动窗格right;//滑动窗格}return res;} }2. 法二单调队列 解题思路 每一个元素的下标都会从右端插入队列如果插入时队列前面的元素小于当前插入元素。说明它们不会是当前窗口最大值我们将前面比它小的取出。然后插入当前元素因为每次我们都将前面较小的去除了所以最左边的元素永远是当前最大的。但是最左边的这个下标如果不是当前窗口范围内的下标就先去除。 代码时间复杂度O(n),空间复杂度O(n) class Solution {public int[] maxSlidingWindow(int[] nums, int k) {int n nums.length;DequeInteger deque new LinkedListInteger();//单调队列保存下标 first --| 队列 |-- last//处理第一个窗口for (int i 0; i k; i) {//将k个元素的下标放入单调队列//如果队列不为空新元素比前面的元素大就将前面比它小的元素取出while (!deque.isEmpty() nums[i] nums[deque.peekLast()]) {deque.pollLast();//将前面小的取出}deque.offerLast(i);//将当前值的下标放入队列保证它前面都是值比它大的下标}int[] ans new int[n - k 1];//答案数组需要n-k1个答案也就是一共n-k1个窗口ans[0] nums[deque.peekFirst()];//将刚刚处理的第一个窗口结果放入ans[0]//处理剩下的窗口for (int i k; i n; i) {//如果队列不为空新元素比前面的元素大就将前面比它小的元素取出while (!deque.isEmpty() nums[i] nums[deque.peekLast()]) {deque.pollLast();//将前面小的取出}deque.offerLast(i);//将当前值的下标放入队列保证它前面都是值比它大的下标while (deque.peekFirst() i - k) {//如果左边界的下标已经不在当前窗口内deque.pollFirst();//将其出队列}ans[i - k 1] nums[deque.peekFirst()];//因为我们一直都只保留大的值所以first就是当前窗口最大值}return ans;} }
http://www.pierceye.com/news/331791/

相关文章:

  • 响应式网站制作公司org域名购买
  • 石家庄网站建设德信互联科技有限公司爬取漫画数据做网站
  • 国内免费iphone网站百度自然排名优化
  • 自己做网站主机做网站和推广
  • wordpress 淘宝嘉兴做网站优化
  • h5 网站开发流程asp个人网站建设
  • 网站建设 正邦企业邮箱怎么认证
  • 建设流网站项目成都住建局官网首页
  • 网站简历文字如何空行产品如何推广市场
  • 吕梁网站设计腾讯营销平台
  • 如何查看网站流量公众号申请网站
  • 阐述企业搭建网站的重要性免费做效果图的网站有哪些
  • 快速网站搭建南宁广告公司网站建设
  • 做数学题网站专业做网站建设 昆山
  • 建筑网站上海网页设计图片素材网
  • 延边网站开发depawo做汽车网站销售怎么入手
  • 商城网站开发技术南京好的网站制作公司
  • 嘉兴网站建设嘉兴网站推广网站网络营销方案
  • 镇江建工建设集团网站建设银行网站怎么基本转个人
  • 自己建的网站打开的特别慢盐城网站建设效果
  • 专业建站报价wordpress这软件怎么搜索
  • 德国网站建设电工培训内容
  • 织梦手机wap网站标签调用外贸网站建设公司如何
  • 在那里能找到网站泰安公司网站开发
  • 大兴区企业网站建设我们网站的优势
  • 呼伦贝尔市建设局网站关键词如何排名在首页
  • 网站带后台模板网站的建设宗旨
  • 深圳网站建设php专门查企业的网站
  • 做问卷调查的网站有啥世界比分榜
  • 网站301定向深圳电梯广告制作公司网站