day4 LeetCode209 长度最小的子数组 | LeetCode59 螺旋矩阵2

 思路

没什么思路。。。

看讲解之后

对暴力解法有了了解

通过两个for循环,第一个for循环 起始位置,第二个for循环 终止位置

然后寻找符合条件的子序列

滑动窗口(可以理解双指针法的一种)

含义:就是不断的调节子序列的起始位置和终止位置,从而得出我们想要的位置。

用一个for循环完成

这个for循环表示终止位置

窗口就是满足 其和>=target的长度最小的连续子数组

窗口的起始位置如何移动 :如果当前窗口的值大于s了,窗口就要向前移动了。

终止位置移动:for循环的索引

实现代码

/**
 * @param {number} target
 * @param {number[]} nums
 * @return {number}
 */
var minSubArrayLen = function(target, nums) {
// 没啥思路。。。
// 看了题解之后,对暴力解法有一定的了解,也能理解
// 两个for循环 完成不断搜索区间的过程
// 从数组第一个数开始找符合条件的连续子数组 找到每个位置的 进行比较 最后得到结果

// 数组操作中的另一个重要方法 滑动窗口 用一个for循环完成不断搜索区间  理解为双指针的一种

// JS里的最大数怎么表示
let result = Infinity
let i = 0//起始位置
let j = 0//终止位置
let subLength = 0
let sum = 0

// 先找i=0时的 连续子数组的长度 
for(j=0;j<nums.length;j++){
    sum+=nums[j]
    // 少了个= 题目要求=
    while(sum>=target){
        subLength = j-i+1//子数组长度
        result=result<subLength?result:subLength
        sum-=nums[i++]//移动起始位置,得把原来起始位置的值减掉
    }

}
if(result!=Infinity)
return result
else
return 0



};

遇到的困难

JS中的最大数表示 Infinity

  思路

没什么思路。。。

看讲解之后

能看懂,但自己想不到。。。

实现代码

遇到的困难

JS中的/ 它不会自动取整,得调用函数 或使用<<

还有 JS 二维数组的创建

new Array(n).fill(0)

// 怎么创建二维数组

let res = new Array(n).fill(0).map(()=>new Array(n).fill(0))

1数组map方法的作用 : 映射数组

array.map( function ( item, index, arr) {} )

map方法的返回值

返回映射之后的新数组

二维数组是一组共享相同名称的项目。二维数组是数组的数组,也就是说,创建一维数组对象的数组。它们以行和列的形式排列成矩阵。

JavaScript建议了一些创建二维数组的方法。

数组构造

您可以使用数组构造函数和for循环来创建2D数组,如下所示:

let arr = new Array(m); // create an empty array of length n
for (var i = 0; i < m; i++) {
  arr[i] = new Array(n); // make each element an array
}
 

收获

对滑动窗口了解了一点,了解螺旋矩阵的题解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值