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

快速建设网站工具北京网站维护公司

快速建设网站工具,北京网站维护公司,龙岩正规全网品牌营销招商,java外包公司有哪些滑动窗口 要区分最小和最大滑窗,内层while循环的条件和更新结果的地方 核心: 关键的区别在于,最大滑窗是在迭代右移右边界的过程中更新结果,而最小滑窗是在迭代右移左边界的过程中更新结果。 最小滑窗 给定数组 nums&#xff0…

滑动窗口

要区分最小和最大滑窗,内层while循环的条件和更新结果的地方

核心:

关键的区别在于,最大滑窗是在迭代右移右边界的过程中更新结果,而最小滑窗是在迭代右移左边界的过程中更新结果

最小滑窗

给定数组 nums,定义滑窗的左右边界 i, j,求满足某个条件的滑窗的最小长度。

while j < len(nums)://这个while也可用fori代替判断[i, j]是否满足条件while 满足条件:不断更新结果(注意在while内更新!)i += 1 (最大程度的压缩i,使得滑窗尽可能的小)j += 1

L209长度最小的子数组

  • 题目:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。如果不存在符合条件的子数组,返回 0。

    示例:

    输入:s = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。

    提示:

    • 1 <= target <= 10^9
    • 1 <= nums.length <= 10^5
    • 1 <= nums[i] <= 10^5
  • leetcode_209

  • class Solution {// 滑动窗口public int minSubArrayLen(int s, int[] nums) {int left = 0;int sum = 0;int result = Integer.MAX_VALUE;for (int right = 0; right < nums.length; right++) {sum += nums[right];//这里要求的是最小子数组,所以这里的while是满足条件的//然后在while里面最大程度的压缩i(也就是左边界)while (sum >= s) {result = Math.min(result, right - left + 1);sum -= nums[left++];}}return result == Integer.MAX_VALUE ? 0 : result;}
    }
    

最大滑窗

给定数组 nums,定义滑窗的左右边界 i, j,求满足某个条件的滑窗的最大长度。

while j < len(nums):判断[i, j]是否满足条件while 不满足条件:i += 1 (最保守的压缩i,一旦满足条件了就退出压缩i的过程,使得滑窗尽可能的大)不断更新结果(注意在while外更新!)j += 1

L904水果成蓝

  • 你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类 。

    你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果:

    你只有 两个 篮子,并且每个篮子只能装 单一类型 的水果。每个篮子能够装的水果总量没有限制。
    你可以选择任意一棵树开始采摘,你必须从 每棵 树(包括开始采摘的树)上 恰好摘一个水果 。采摘的水果应当符合篮子中的水果类型。每采摘一次,你将会向右移动到下一棵树,并继续采摘。
    一旦你走到某棵树前,但水果不符合篮子的水果类型,那么就必须停止采摘。
    给你一个整数数组 fruits ,返回你可以收集的水果的 最大 数目。

  • 白话题目:求只包含两种元素的最长连续子序列

  • class Solution {public int totalFruit(int[] fruits) {int n = fruits.length;Map<Integer, Integer> cnt = new HashMap<Integer, Integer>();int left = 0, ans = 0;for (int right = 0; right < n; ++right) {cnt.put(fruits[right], cnt.getOrDefault(fruits[right], 0) + 1);//注意这里的while是不满足条件的//并且这里统计的ans是在while外面进行更新的!!!!!//这个与上面的最小子数组有着本质区别while (cnt.size() > 2) {cnt.put(fruits[left], cnt.get(fruits[left]) - 1);if (cnt.get(fruits[left]) == 0) {cnt.remove(fruits[left]);}++left;}ans = Math.max(ans, right - left + 1);}return ans;}
    }
    

总结:

  • 第一题让求大于某个数的最小子数组长度

    • while里面最大限度的压缩,只要满足就压缩

    • while的条件是大于某个数(即满足题意),并且while每循环一次就更新一下result的长度

    •         while (sum >= s) {result = Math.min(result, right - left + 1);sum -= nums[left++];}
      
  • 第二题让求最多包含两类(<=2)的最长子序列长度

    • while里面最小程度的压缩

    • while里的条件是大于2(即与题意相反),并且是while结束后进行更新长度ans

    •         while (cnt.size() > 2) {cnt.put(fruits[left], cnt.get(fruits[left]) - 1);if (cnt.get(fruits[left]) == 0) {cnt.remove(fruits[left]);}++left;}ans = Math.max(ans, right - left + 1);
      
http://www.zhongyajixie.com/news/10419.html

相关文章:

  • 微信小程序设计制作班级优化大师电脑版
  • 网站建设试卷怎么把自己的网站发布到网上
  • 觅知网是免费的吗苏州seo整站优化
  • 网站被黑刚恢复排名又被黑了深圳优化公司高粱seo较
  • 延吉网站建设女生做sem专员的工作难吗
  • 荣茂网站建设八零云自助建站免费建站平台
  • 海淀网站制作服务公司网上销售平台有哪些
  • 百度seo公司有哪些武汉seo公司哪家专业
  • 广元做网站威海网站制作
  • 免费网站备济南网站制作平台
  • 网站开发要学习什么googleseo优化
  • 网站申请备案国产搜什么关键词最好看
  • 如何免费建设网站网络免费推广平台
  • 在360怎么做网站搜索引擎优化的含义和目标
  • 微信小程序第三方开发seo费用
  • 做餐饮要看的网站免费正能量erp软件下载
  • 怎么做网站推广的论文seo排名工具给您好的建议下载官网
  • 苏州cms建站网站优化策划书
  • 南京网页网站制作seo是怎么优化推广的
  • labview 做网站推广营销软件
  • 网站seo推广的方法商业软文案例
  • 政府网站建设服务方案群排名优化软件官网
  • 怎样做网站xmlseo搜索引擎优化到底是什么
  • 做的较好的拍卖网站全国疫情高峰感染进度
  • 武威网站怎么做seo一站式海外推广平台
  • 电商类网站开发定制文山seo
  • 手机网站建设的公司排名网站运营主要做什么
  • 做图的赚钱的网站seo经理
  • 个人适合网站类型公司网站建设需要多少钱
  • 垂直网站怎么做谷歌站长平台