704. 二分查找
力扣题目链接
class Solution {
public:
int search(vector<int>& nums, int target) {
int left = 0;
int right = nums.size() - 1;
while(left <= right){
int middle = left +(right - left) / 2;
if(nums[middle] > target){
right = middle - 1;
}
else if(nums[middle] < target){
left = middle + 1;
}
else{
return middle;
}
}
return -1;
}
};
27. 移除元素
力扣题目链接
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int length = nums.size();
int slow = 0, fast = 0;
while(fast < length){
if(nums[fast] != val){
nums[slow] = nums[fast];
slow++;
}
fast++;
}
return slow;
}
};
977. 有序数组的平方
力扣题目链接
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
int k = nums.size() - 1;
vector<int> result(nums.size(), 0);
for (int i = 0, j = nums.size() - 1; i <= j;) {
if (nums[i] * nums[i] < nums[j] * nums[j]) {
result[k] = nums[j] * nums[j];
k--;j--;
}
else {
result[k] = nums[i] * nums[i];
k--;i++;
}
}
return result;
}
};
209. 长度最小的子数组
力扣题目链接
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int result = INT32_MAX;
int sum = 0;
int start = 0;
int sublength = 0;
for(int end = 0; end < nums.size(); end++){
sum += nums[end];
while(sum >= target){
sublength = end - start + 1;
result = min(result, sublength);
sum -= nums[start];
start++;
}
}
return result == INT32_MAX ? 0 : result;
}
};
59. 螺旋矩阵 II
力扣题目链接
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n, vector<int>(n, 0));
int startx = 0, starty = 0;
int loop = n / 2; //每个圈循环几次
int mid = n / 2;
int count = 1;
int offset = 1; //控制每一遍遍历长度
int i,j;
while(loop--){
i = startx;
j = starty;
for(j = starty; j < starty + n - offset; j++){ //左到右
res[startx][j] = count;
count++;
}
for(i = startx; i < startx + n - offset; i++){ //上到下
res[i][j] = count;
count++;
}
for(; j > starty; j--){ //右到左
res[i][j] = count;
count++;
}
for(; i > startx; i--){ //下到上
res[i][j] = count;
count++;
}
startx++;
starty++;
offset += 2;
}
if(n % 2){
res[mid][mid] = count;
}
return res;
}
};