1.长度最小的子数组
class Solution {
public:
int minSubArrayLen(int target, vector<int>& nums) {
int n=nums.size()-1;
int sum=0;
int j=0;
int length=0;
int res=1000000;
for(int i=0;i<nums.size();i++){
sum+=nums[i];
while(sum>=target){
length=i-j+1;
if(res<length){
res=res;
}else{
res=length;
}
sum-=nums[j];
j++;
}
}
if(res<length){
return res;
}else{
return length;
}
}
};
2.螺旋矩阵II
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> res(n,vector<int>(n,0));
int x=0,y=0;
int loop=n/2;
int mid=n/2;
int offset=1;
int count=1;
int i,j;
while(loop--){
i=x;
j=y;
for(j;j<n-offset;j++){
res[i][j]=count++;
}
for(i;i<n-offset;i++){
res[i][j]=count++;
}
for(j;j>y;j--){
res[i][j]=count++;
}
for(i;i>x;i--){
res[i][j]=count++;
}
x++;
y++;
offset++;
}
if(n%2!=0){
res[mid][mid]=count++;
}
return res;
}
};
3.区间和
#include<iostream>
#include<vector>
using namespace std;
int main(){
int n,a,b;
cin>>n;
vector<int> res(n,0);
for(int i=0;i<n;i++){
cin>>res[i];
}
int presum=0;
int res1=0;
vector<int> sum(n,0);
for(int i=0;i<n;i++){
presum+=res[i];
sum[i]=presum;
}
while(cin>>a>>b){
if(a>0){
res1=sum[b]-sum[a-1];
}else if(a==0){
res1=sum[b];
}
std::cout << res1 << std::endl;
}
}
4.开发商购买土地
#include<iostream>
#include<vector>
#include<climits>
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int sum=0;
vector<vector<int>> res(n,vector<int>(m,0));
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
cin>>res[i][j];
sum+=res[i][j];
}
}
vector<int> hor(n,0);
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
hor[i]+=res[i][j];
}
}
vector<int> ver(m,0);
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
ver[i]+=res[j][i];
}
}
int hsum=0;
int result=INT_MAX;
for(int i=0;i<n;i++){
hsum+=hor[i];
result=min(result, abs(sum - hsum -hsum));
}
int vsum=0;
for(int i=0;i<m;i++){
vsum+=ver[i];
result=min(result,abs(sum-vsum-vsum));
}
cout<<result<<endl;
}