普通网站设计,佛山百度关键词seo外包,上传下载网站模板,音乐网站建设教程视频教程文章目录 前言数组知识点 一、 977. 有序数组的平方二、209. 长度最小的子数组三、59. 螺旋矩阵 II总结 前言
一个本硕双非的小菜鸡#xff0c;备战24年秋招#xff0c;计划二刷完卡子哥的刷题计划#xff0c;加油#xff01; 二刷决定精刷了#xff0c;于是参加了卡子哥… 文章目录 前言数组知识点 一、 977. 有序数组的平方二、209. 长度最小的子数组三、59. 螺旋矩阵 II总结 前言
一个本硕双非的小菜鸡备战24年秋招计划二刷完卡子哥的刷题计划加油 二刷决定精刷了于是参加了卡子哥的刷题班训练营为期60天我一定能坚持下去迎来两个月后的脱变的加油 推荐一手卡子哥的刷题网站感谢卡子哥。代码随想录
数组知识点
数组是存放在连续内存空间上的相同类型数据的集合。 数组下标都是从0开始的。 数组内存空间的地址是连续的。二维数组一样如此。 因为数组的在内存空间的地址是连续的所以我们在删除或者增添元素的时候就难免要移动其他元素的地址。数组的元素是不能删的只能覆盖。 vector的底层实现是array严格来讲vector是容器不是数组。
一、 977. 有序数组的平方
977. 有序数组的平方 Note暴力解题
class Solution {
public:vectorint sortedSquares(vectorint nums) {int size nums.size();for (int i 0; i size; i) {nums[i] * nums[i];}sort(nums.begin(), nums.end());return nums;}
};Note双指针新建数组从尾至头塞数
class Solution {
public:vectorint sortedSquares(vectorint nums) {int size nums.size() - 1;vectorint result(size 1, 0);for (int i 0, j nums.size() - 1; i j;) {if (nums[i] * nums[i] nums[j] * nums[j]) {result[size--] nums[j] * nums[j];j--;} else {result[size--] nums[i] * nums[i];i;}}return result;}
};二、209. 长度最小的子数组
209. 长度最小的子数组
Note暴力/滑动窗口 暴力会超时
class Solution {
public:int minSubArrayLen(int target, vectorint nums) {int result INT32_MAX;int sum 0;int length 0;for (int i 0; i nums.size(); i) {sum 0;for (int j i; j nums.size(); j) {sum nums[j];if (sum target) {length j - i 1;result result length ? result : length;break;}}}return result INT32_MAX ? 0 : result;}
};滑动窗口其实也是一种双指针
class Solution {
public:int minSubArrayLen(int target, vectorint nums) {int result INT32_MAX;int sum 0;int length 0;for (int i 0, j 0; j nums.size(); j) {sum nums[j];while (sum target) {length j - i 1;result result length ? result : length;sum - nums[i];}}return result INT32_MAX ? 0 : result;}
};三、59. 螺旋矩阵 II
59. 螺旋矩阵 II
Note模拟大法好
class Solution {
public:int minSubArrayLen(int target, vectorint nums) {int result INT32_MAX;int sum 0;int length 0;for (int i 0; i nums.size(); i) {sum 0;for (int j i; j nums.size(); j) {sum nums[j];if (sum target) {length j - i 1;result result length ? result : length;break;}}}return result INT32_MAX ? 0 : result;}
};总结
写二分法经常写乱主要是因为对区间的定义没有想清楚区间的定义就是不变量。要在二分查找的过程中保持不变量就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作这就是循环不变量规则。 写二分法区间的定义一般为两种左闭右闭即[left, right]或者左闭右开即[left, right)。