# 2022-01-03每日刷题打卡

## 飞书——每日一题

#### 6. Z 字形变换

P   A   H   N
A P L S I I G
Y   I   R


string convert(string s, int numRows);


输入：s = "PAYPALISHIRING", numRows = 3



class Solution {
public:
string convert(string s, int numRows) {
if(numRows==1)return s;
vector<string>v(numRows);
int ans=1,l=0;
for(auto i:s)
{
v[l].push_back(i);
if(l+ans>=numRows)ans=-1;
else if(l+ans<0)ans=1;
l+=ans;
}
string str;
for(auto i:v)
{
for(auto j:i)
str+=j;
}
return str;
}
};


#### 1185. 一周中的第几天

class Solution {
public:
string dayOfTheWeek(int day, int month, int year) {
string week[]={"Sunday","Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
int num[]={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int ans=4;
for(int i=1971;i<year;i++)
{
ans+=((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)?366:365;
}
for(int i=1;i<month;i++)
{
ans+=num[i-1];
if (i == 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) ans++;
}
ans+=day;
return week[ans%7];
}
};


## AcWing——每日一题

1≤N≤10^6
1≤K≤25000
1≤A≤B≤N

#### 输入样例：

7 4
5 5
2 4
4 6
3 5


#### 输出样例：

1


#### 样例解释

#include<iostream>
using namespace std;

const int N=1000010;
int h[N],q[N],a,b,k,n;

void quick_sort(int q[],int l,int r)
{
if(l>=r)return;
int x=q[(l+r)/2],i=l-1,j=r+1;
while(i<j)
{
do i++;while(q[i]<x);
do j--;while(q[j]>x);
if(i<j)swap(q[i],q[j]);
}
quick_sort(q,l,j);
quick_sort(q,j+1,r);
}

int main()
{
cin>>n>>k;
while(k--)
{
cin>>a>>b;
h[a-1]++;
h[b]--;
}
q[0]=h[0];
for(int i=1;i<n;i++)
q[i]=h[i]+q[i-1];
quick_sort(q,0,n-1);
cout<<q[n/2];
return 0;
}


#### 33. 搜索旋转排序数组

class Solution {
public:
int search(vector<int>& nums, int target) {
int n=nums.size();
if(!n)return -1;
else if(n==1)return nums[0]==target?0:-1;
int l=0,r=n-1;
while(l<=r)
{
int mid=(l+r)/2;
if(nums[mid]==target)return mid;
if(nums[0]<=nums[mid])
{
if(nums[0]<=target&&nums[mid]>=target)r=mid-1;
else l=mid+1;
}
else
{
if(nums[mid]<=target&&nums[n-1]>=target)l=mid+1;
else r=mid-1;
}
}
return -1;
}
};


05-16 8965
05-21 3464
01-03 568
03-10 185
02-07 158
02-09 92
03-01 1万+
03-08 109
10-21 380
06-05 9909
06-22 3万+

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

¥2 ¥4 ¥6 ¥10 ¥20

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。