第 30 场双周赛

转变日期格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
class Solution {
string ans;
public:
string reformatDate(string date) {
int n=date.size(),i;
ans="";
for(i=n-4;i<n;i++)ans+=date[i];
ans+='-';
for(i=0;date[i]!=' ';i++);
i++;
if(date[i]=='J')
{
ans+='0';
if(date[i+1]=='a')ans+='1';
else if(date[i+2]=='n')ans+='6';
else ans+='7';
}
else if(date[i]=='F')
{
ans+='0';
ans+='2';
}
else if(date[i]=='M')
{
ans+='0';
if(date[i+2]=='r')ans+='3';
else ans+='5';
}
else if(date[i]=='A')
{
ans+='0';
if(date[i+1]=='p')ans+='4';
else ans+='8';
}
else if(date[i]=='S')
{
ans+='0';
ans+='9';
}
else if(date[i]=='O')
{
ans+='1';
ans+='0';
}
else if(date[i]=='N')
{
ans+='1';
ans+='1';
}
else if(date[i]=='D')
{
ans+='1';
ans+='2';
}
ans+='-';
if(date[1]>='0'&&date[1]<='9')for(i=0;i<2;i++)ans+=date[i];
else
{
ans+='0';
ans+=date[0];
}
return ans;
}
};

子数组和排序后的区间和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
int s[1005],a[1000005];
public:
int rangeSum(vector<int>& nums, int n, int left, int right) {
int i,j,m=0,ans=0;
for(i=0;i<n;i++)s[i+1]=s[i]+nums[i];
for(i=1;i<=n;i++)for(j=i;j<=n;j++)a[++m]=s[j]-s[i-1];
sort(a+1,a+m+1);
for(i=left;i<=right;i++)
{
ans+=a[i];
if(ans>=1000000007)ans-=1000000007;
}
return ans;
}
};

三次操作后最大值与最小值的最小差

1
2
3
4
5
6
7
8
9
10
class Solution {
public:
int minDifference(vector<int>& nums) {
if(nums.size()<5)return 0;
sort(nums.begin(),nums.end());
int n=nums.size(),i,ans=nums[n-1]-nums[0];
for(i=0;i<4;i++)ans=min(ans,nums[i+n-4]-nums[i]);
return ans;
}
};

石子游戏 IV

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Solution {
int f[100005];
bool work(int n)
{
if(~f[n])return f[n];
if(!n)return 0;
for(int i=1;i*i<=n;i++)if(!work(n-i*i))return f[n]=1;
return f[n]=0;
}
public:
bool winnerSquareGame(int n) {
memset(f,-1,sizeof(f));
return work(n);
}
};
Donate? comment?