在JavaScript超过数组长度也不会出错的今天,解决问题时遇到了这样的问题
while(sumtarget({right; sum =nums[right]; }其中,while循环没有添加right索引超过数组长度时的限制,但没有报告错误,程序运行正常。
在此调查原因后,发现right在范围外时,nums[right]输出为undefined
console.log(nums[nums.Length] )/undefined在undefined与数量相加时为NaN
在console.log (10 nums [ nums.length ] )/Nanwhile循环的判定条件下,NaN与数字比较直接返回false,因此可以不影响结果地退出循环。
console.log(Nan10 )//false主题: 209 .长度最小的子数组
3359 leet code-cn.com/problems/minimum-size-subarray-sum /
试着缩写为后缀递增,忘记了将right的初始值从-1改为0。JavaScript无法通过负的索引遍历数组直接返回undefined。 因此,结合上面的示例,直接退出第一个小while循环。 right就这样,陷入死循环。
错误示范:
varminsubarraylen=function (target,nums ) ) { let left=0,right=-1; let sum=0; let res=nums.length 1; while(rightnums.length ) while (sum target ) { //right; sum =nums[ right]; }while(sum=target ) RES=) RESright-left1)? right-left 1 : res; sum -=nums[left]; 左足; } } return resnums.length? 0 : res; }