首页 > 其他分享 >代码随想录第二天 | 有序数组的平方_leetcode 长度最小的子数组_leetcode 螺旋矩阵II_leetcode

代码随想录第二天 | 有序数组的平方_leetcode 长度最小的子数组_leetcode 螺旋矩阵II_leetcode

时间:2023-03-17 23:23:45浏览次数:41  
标签:nums 随想录 number len let 数组 leetcode

有序数组的平方

考虑到数组中元素存在负数的情况,数组元素平方之后,最大值存在于新数组的两边,这里采用“双指针法”可以满足时间复杂度为O(n)

若对数组中的元素平方之后再去排序,可以采用快速排序的方式,此时的时间复杂度为O(nlogn)

这里给出双指针的解法、

/**  * @param {number[]} nums  * @return {number[]}  */ let sortedSquares = function(nums) {     let n = nums.length;     let newNums = new Array(n).fill(0);g    let i = 0, j = n - 1, k = n -1;     while(i <= j) {         let left = nums[i] * nums[i];         let right = nums[j] * nums[j];         if(left < right) {           newNums[k--] = right;           j--;         } else {           newNums[k--] = left;           i++;         }     }     return newNums; };

长度最小的子数组

采用双指针的方法实现滑动窗口

O(n)

 

O(nlog(n))

/**  * @param {number} target  * @param {number[]} nums  * @return {number}  */ var minSubArrayLen = function(target, nums) {     //滑动窗口方法     //记录窗口大小的指针     let start = 0;     let end = 0;     //窗口内的值     let sum = 0;     //窗口最短长度     let len = Infinity;
    while(end < nums.length) {         sum += nums[end];         while(sum >= target) {             len = Math.min(len, end - start + 1);             sum -= nums[start];             start++;         }             end++;         }         return len === Infinity ? 0 : len; };

螺旋矩阵II

标签:nums,随想录,number,len,let,数组,leetcode
From: https://www.cnblogs.com/xxdj168/p/17226240.html

相关文章