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

day4 LeetCode209 长度最小的子数组 | LeetCode59 螺旋矩阵2_第1张图片

 思路

没什么思路。。。

看讲解之后

对暴力解法有了了解

通过两个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=target){
        subLength = j-i+1//子数组长度
        result=result

遇到的困难

JS中的最大数表示 Infinity

day4 LeetCode209 长度最小的子数组 | LeetCode59 螺旋矩阵2_第2张图片

  思路

没什么思路。。。

看讲解之后

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

实现代码

遇到的困难

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
}
 

收获

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

你可能感兴趣的:(算法,数据结构)