977 有序数组的平方
冒泡排序
暴力冒泡排序实现
class Solution {
public:
vector sortedSquares(vector& nums) {
int size = nums.size();
int tmp;
for (int i = 0; i nums[j]) {
tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}
}
return nums;
}
};
### 双指针
点击查看代码
class Solution {
public:
vector sortedSquares(vector& nums) {
int size = nums.size() - 1;
int slow = size - 1;
for (int i = 0, j = size - 1; i
209 最小子数组
循环暴力解法:O(n^3)超时
三层循环实现
class Solution {
public:
int minSubArrayLen(int target, vector& nums) {
int size = nums.size();
int len = 1;
int ret = 0;
for (int len = 1; len = target) {
ret = len;
goto end_loop;
}
}
}
}
end_loop:
return ret;
}
};
滑动窗口思路:起始位置和终止位置如何确定
for两层循环分别确定起始和终止位置
class Solution {
public:
int minSubArrayLen(int target, vector& nums) {
int sublength = INT32_MAX; //这里容易设置为0
int size = nums.size();
for (int i = 0; i = target) {
sublength = (j - i + 1)
滑动窗口:特殊的快慢双指针(先确定一个边界位置)
求最大和最小长度:缩小法
求最小值最大长度:放大法
以快慢指针的角度理解滑动窗口
class Solution {
public:
int minSubArrayLen(int target, vector& nums) {
int sublength = INT32_MAX;
int size = nums.size();
int sum = 0;
for (int i = 0; i = target) {
sublength = (i - j + 1)
真正意义的滑动窗口
真正的滑动窗口实现
class Solution {
public:
int minSubArrayLen(int target, vector& nums) {
int sublength = INT32_MAX;
int size = nums.size();
int sum = 0;
int j = 0;
for (int i = 0; i = target) {
sublength = (i - j + 1)
59 螺旋矩阵II
思路:四条路线,四个边界,每走一条路线,边界往里缩1
代码实现
class Solution {
public:
vector> generateMatrix(int n) {
int u = 0, d = n - 1, l = 0, r = n - 1;
int sum = n * n;
vector> vec(n, vector(n)); //初始化方式
int i = 1;
while (i = l; x--) {
vec[d][x] = i++;
}
d--;
for (int y = d; y >= u; y--) {
vec[y][l] = i++;
}
l++;
}
return vec;
}
};
机房租用,北京机房托管,大带宽租用,IDC机房服务器主机租用托管-价格及服务咨询 www.e1idc.net