代码实现:
暴力解法
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
for(int i = 0;i < nums.size();i++){
nums[i] = nums[i] * nums[i];
}
sort(nums.begin(),nums.end());
return nums;
}
};
双指针
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
vector<int> result(nums.size(),0);
int length = nums.size()-1;
for(int i=0,j= length ;i<=j; ){
if(nums[i] * nums[i] > nums[j] * nums[j]){
result[length] = nums[i] * nums[i];
length--;
i++;}
else{
result[length] = nums[j] * nums[j];
length--;
j--;
}
}
return result;
}
};
代码实现:
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int result = INT32_MAX;
int length = nums.size();
int sum ;
int sublength = 0;
for(int i = 0; i < length; i++){
sum = 0;
for(int j = i; j < length; j++){
sum = sum + nums[j];
if(sum >= target){
sublength = j- i +1;
result = result < sublength ? result : sublength;
break;
}
}
}
return result == INT32_MAX? 0 : result;
}
};
双指针
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int result = INT32_MAX;
int length = nums.size();
int sum = 0 ;
int sublength = 0;
int i = 0;
for(int j = 0; j < length;j++){
sum += nums[j];
while(sum >= target){
sublength = (j - i +1);
result = result < sublength? result : sublength;
sum -= nums[i];
i++;
}
}
return result == INT32_MAX ? 0:result;
}
};
代码实现:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>>res(n,vector<int>(n,0));
int start_x = 0;
int start_y = 0;
int loop = n/2;
int mid = n/2;
int counter = 1;
int offset = 1;
int i ,j;
while(loop--){
i = start_x;
j = start_y;
for(j = start_y;j < n - offset;j++){
res[start_x][j] = counter;
counter++;
}
for (i = start_x;i < n - offset;i++){
res[i][j] = counter;
counter++;
}
for( ;j > start_y;j--){
res[i][j] = counter;
counter++;
}
for ( ;i>start_x;i--){
res[i][j] = counter;
counter++;
}
start_x++;
start_y++;
offset++;
}
if(n % 2){
res[mid][mid] = counter;
}
return res;
}
};
学习时长2.5小时。
(ps:最近最近忙着测评、笔试、面试,所以没有写思路和总结,只是动手敲了一遍代码,后续有时间的话会补充思路和总结收获)