代码随想录算法训练营第二天 | 977.有序数组的平方,209.长度最小的子数组, 59.螺旋矩阵II
977.有序数组的平方
暴力解
class Solution { public: vector<int> sortedSquares(vector<int>& nums) { for (size_t i = 0; i < nums.size(); ++i) { nums[i] *= nums[i]; } sort(nums.begin(),nums.end()); return nums; } };
开始没想到的双指针版本
class Solution { public: vector<int> sortedSquares(vector<int>& nums) { vector<int> nums1(nums.size(),0); // 扩容 int i = 0; int j = nums.size()- 1; int k = nums.size() - 1; int left = 0,right = 0; while(i <= j) { left = nums[i]*nums[i]; right = nums[j]*nums[j]; if (left < right) { nums1[k--] = right; j--; } else { nums1[k--] = left; i++; } } return nums1; } };
209.长度最小的子数组
滑动窗口
// 自己的版本 class Solution { public: int minSubArrayLen(int target, vector<int>& nums) { int minlength = INT32_MAX; int currlength = 1; int i = 0, j = 0; int sum = nums[0]; // 滑动窗口的值 while (i <= j && j < nums.size()) { if (target > sum) { j++; if (j >= nums.size()) break; sum += nums[j]; currlength++; } else { minlength = min(minlength,currlength); // 取最小值 sum -= nums[i]; i++; currlength--; } } return minlength == INT32_MAX ? 0 : minlength; } };
学习完优化版本
class Solution { public: int minSubArrayLen(int target, vector<int>& nums) { int minlength = INT32_MAX; int currlength = 0; int i = 0; int sum = 0; // 滑动窗口的值 for (int j = 0; j < nums.size();++j) { sum += nums[j]; while (sum >= target) { currlength = j - i + 1; minlength = min(minlength,currlength); sum = sum - nums[i++]; } } return minlength == INT32_MAX ? 0 : minlength; } };
59.螺旋矩阵II
class Solution { public: vector<vector<int>> generateMatrix(int n) { vector<vector<int>> result(n,vector<int>(n,0)); int num = 1; int i = 0; int j = 0; int loop = n / 2; int loop_num = 1; while(loop--) { while(j < n - loop_num) { result[i][j++] = num++; } while(i < n-loop_num) { result[i++][j] = num++; } while(j >= loop_num) { result[i][j--] = num++; } while(i >= loop_num) { result[i--][j] = num++; } i++; // 每层结束,开始位置都要增加 j++; loop_num++; } if ((n % 2) != 0) result[n/2][n/2] = num; return result; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?