LeetCode——209.长度最小的子数组
https://leetcode-cn.com/problems/minimum-size-subarray-sum/submissions/
@代码随想录
1.暴力解法
class Solution {public static int minSubArrayLen(int target, int[] nums) {//暴力解法:从每一个数开始直到和》target为止,并记录下这个数//求数组长度 num.length//求字符串长度 s.length()int length = nums.length;int[] result = new int[length];for(int i = 0; i < length ; i++){int sum = 0;for(int j = i; j < length; j++){sum += nums[j];if(sum >= target){result[i] = j - i + 1;break;}}}//单独判断最后一个数字if(nums[length - 1] < target){result[length - 1] = length + 1;}int min = result[length - 1];for(int k = 0; k < length; k++){//System.out.print(result[k] + " ");//System.out.print(" ----- ");if(result[k] == 0){result[k] = length + 1;}//System.out.print(result[k] + " ");if(result[k] < min){min = result[k];}}if(min == length + 1){return 0;}return min;}//此方法优化:不需要新建立数组再一个个比较,直接定最小值然后不断更新最小值,如果最小值一直是0,那么就返回0
}
注意:
求数组的长度 num.length
求字符串的长度 s.length()
滑动窗口
在本题中实现滑动窗口,主要确定如下三点:
- 窗口内是什么?
- 如何移动窗口的起始位置?
- 如何移动窗口的结束位置?
窗口就是 满足其和 ≥ s 的长度最小的 连续子数组。
窗口的起始位置如何移动:如果当前窗口的值大于s了,窗口就要向前移动了(也就是该缩小了)。
窗口的结束位置如何移动:窗口的结束位置就是遍历数组的指针,窗口的起始位置设置为数组的起始位置就可以了。
解题的关键在于 窗口的起始位置如何移动。
class Solution {public static int minSubArrayLen(int target, int[] nums) {//result的初始值为一个不可能的值int result = nums.length + 1;int left = 0;int length = nums.length;int sum = 0;for(int right = 0;right < length; right++){//向右滑动sum += nums[right];while(sum >= target){result = Math.min(result, right - left + 1);sum -= nums[left++];//向左滑动}}return result == nums.length + 1 ? 0 : result;}}
LeetCode——209.长度最小的子数组相关推荐
- 代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方、LeetCode 209.长度最小的子数组、LeetCode 59.螺旋矩阵II
LeetCode 977.有序数组的平方 双指针法:数组其实是有序的, 只不过负数平方之后可能成为最大数了.那么数组平方的最大值就在数组的两端,不是最左边就是最右边,不可能是中间.此时可以考虑双指针法 ...
- LeetCode—209. 长度最小的子数组
209. 长度最小的子数组 题目描述:给定一个含有 n 个正整数的数组和一个正整数 target . 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ...
- leetcode —— 209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = 7, num ...
- leetcode 209.长度最小的子数组
1 题目描述 给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组.如果不存在符合条件的连续子数组,返回 0. 示例: 输入: s = 7, num ...
- LeetCode 209. 长度最小的子数组
思路: 评论区的大佬太强了,搬运. len 表示 结果:j表示此片段的最左索引:sum表示片段和 先遍历,逐个递加,直到大于s 时,再去缩短长度. public int minSubArrayLen( ...
- [leetcode]209. 长度最小的子数组
暴力: class Solution {public:int minSubArrayLen(int s, vector<int>& nums) {bool flag = false ...
- 【Leetcode数组--子数组--滑动窗口】209. 长度最小的子数组 904. 水果成篮 1004. 最大连续1的个数 III 76. 最小覆盖子串(有数组操作中重要的方法:滑动窗口!!!!)
文章目录 Leetcode209 1.问题描述 2.解决方案 解法一:两个错误思路的算法 解法二:暴力 解法三:滑动窗口法(O(n)) Leetcode904 1.问题描述 2.解决方案 Leetco ...
- Leonard代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II。
第一章数组 (今日任务) 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结 建议大家先独立做题,然后看视频讲解,然后看文章讲解,然后在重新做一遍题,把题目AC,最后整理 ...
- 代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II
代码随想录算法训练营第二天 | LeetCode977.有序数组的平方 ,209.长度最小的子数组,59.螺旋矩阵II 一. LeetCode977.有序数组的平方 1. 题目链接[LeetCode9 ...
最新文章
- Android开发环境——Eclipse ADT相关内容汇总
- python免费入门手册-Python 基础入门教程
- ai包装插件_找AI插件很费劲,一次给你66款AI插件合集!每一款都是设计师常用...
- DS1302——51
- Net分布式系统之:微服务架构
- stream流把list转为map
- algorand共识协议_【Filecoin】理解预期共识 - 及它的优缺点
- 1106. Lowest Price in Supply Chain (25)-PAT甲级真题(dfs,bfs,树的遍历)
- Ulipad安装失败解决办法
- 大数据面试题及答案-汇总版
- 网络攻防技术——SQL注入
- opencontrail 2.20
- 一文读懂卷积神经网络中的1x1卷积核
- c++除法保留小数_小学数学整数和小数的应用题解答方法公式汇总,新学期必备...
- 公众号 多服务器配置_公众号发布的文章越多,涨粉越多吗?
- [转] 晚上一般什么时候睡觉?
- 信捷plc c 语言全局变量,三菱PLC编程中,跳转指令CJ、子程序调用CALL和中断指令有什么区别?...
- linux raid 找回文件,linux – 恢复已经在降级模式下运行的RAID-5(丢失了第二个磁盘)...
- 九度OJ北京航空航天大学2008机试题题解
- Linux环境中对海康威视工业相机SDK进行二次开发(QT+CMake+Opencv+海康SDK)