2021春季每日一题week3 未完结
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021春季每日一题week3 未完结相关的知识,希望对你有一定的参考价值。
目录
- 190. 颠倒二进制位
- 77. 翻转单词顺序
- 74. 搜索二维矩阵
- 15. 二维数组中的查找【思维 双指针】
- 90. 子集 II【dfs】
- 93. 递归实现组合型枚举
- 1006. 笨阶乘【栈】
- 1381. 阶乘【思维】
- 面试题 17.21. 直方图的水量【未完成】
- 592. 雨【未完成】
- 1143. 最长公共子序列【DP】
- 1222. 密码脱落【未完成 DP】
- 781. 森林中的兔子【思维】
- 3192. 出现次数最多的数【签到】
190. 颠倒二进制位
class Solution
public:
uint32_t reverseBits(uint32_t n)
uint32_t sum=0;
for(int i=0;i<=31;i++)
if(n>>i&1) sum=sum*2+1;
else sum=sum*2;
return sum;
;
77. 翻转单词顺序
class Solution
public:
string reverseWords(string s)
reverse(s.begin(),s.end());
stringstream l(s);
string ans,a;
while(l>>a)
reverse(a.begin(),a.end());
if(ans.size()) ans+=" ";
ans+=a;
return ans;
;
74. 搜索二维矩阵
class Solution
public:
bool searchMatrix(vector<vector<int>>& matrix, int target)
int x=0,y=0;
int n=matrix.size();
int m=matrix[0].size();
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(matrix[i][j]==target) return true;
return false;
;
15. 二维数组中的查找【思维 双指针】
class Solution
public:
bool searchArray(vector<vector<int>> array, int target)
if(!array.size()) return false;
int n=array.size(),m=array[0].size();
int i=0,j=m-1;
while(i<n&&j>=0)
if(array[i][j]==target) return true;
else if(array[i][j]>target) j--;
else i++;
return false;
;
90. 子集 II【dfs】
class Solution
public:
set<vector<int>>st;
vector<int>ve;
int a[105]=0;
void dfs(int index,vector<int> nums)
if(index==nums.size())
st.insert(ve);
return;
ve.push_back(nums[index]);
dfs(index+1,nums);
ve.pop_back();
dfs(index+1,nums);
vector<vector<int>> subsetsWithDup(vector<int>& nums)
sort(nums.begin(),nums.end());
dfs(0,nums);
vector< vector<int> > ans;
for(auto i=st.begin();i!=st.end();i++)
ans.push_back(*i);
return ans;
;
93. 递归实现组合型枚举
#include<bits/stdc++.h>
using namespace std;
const int N=35;
int a[N],st[N],n,m;
void dfs(int s,int index)
if(index==m)
for(int i=0;i<index;i++) cout<<a[i]<<" ";
cout<<endl;
return;
for(int i=s;i<=n;i++)
if(!st[i])
st[i]=1;a[index]=i;
dfs(i,index+1);
st[i]=0;
int main(void)
cin>>n>>m;
dfs(1,0);
return 0;
1006. 笨阶乘【栈】
class Solution
public:
int clumsy(int n)
if(n==1) return 1;
char s[10]="*/+-";
int k=0;
bool flag=true;
stack<int>st1; st1.push(n);
stack<int>st2;
for(int i=n-1;i>=1;i--)
if(flag)
if(st2.size())
int temp=st1.top()-st2.top();
st1.pop(),st2.pop();
st1.push(temp);
if(k==0)
int temp=st1.top()*i;
st1.pop(); st1.push(temp);
k++;
else if(k==1)
int temp=st1.top()/i;
st1.pop(); st1.push(temp);
k++;
else if(k==2)
int temp=st1.top()+i;
st1.pop(); st1.push(temp);
k++;
if(k==3) flag=!flag,k=0;
else
if(!st2.size())
st2.push(i);
continue;
if(k==0)
int temp=st2.top()*i;
st2.pop(); st2.push(temp);
k++;
else if(k==1)
int temp=st2.top()/i;
st2.pop(); st2.push(temp);
k++;
if(k==2) flag=!flag;
int ans=st1.top();
if(st2.size()) ans-=st2.top();
return ans;
;
1381. 阶乘【思维】
#include<bits/stdc++.h>
using namespace std;
int main(void)
int sum=1,cnt2=0,cnt5=0,n;
cin>>n;
for(int i=1;i<=n;i++)
int x=i;
while(x%2==0) cnt2++,x/=2;
while(x%5==0) cnt5++,x/=5;
sum=sum*x%10;
for(int i=1;i<=cnt2-cnt5;i++) sum=sum*2%10;
cout<<sum;
return 0;
面试题 17.21. 直方图的水量【未完成】
592. 雨【未完成】
1143. 最长公共子序列【DP】
class Solution
public:
int longestCommonSubsequence(string text1, string text2)
int f[1010][1010]=0;
int n=text1.size(),m=text2.size();
text1="0"+text1,text2="0"+text2;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
f[i][j]=max(f[i-1][j-1],f[i-1][j],f[i][j-1]);
if(text1[i]==text2[j])
f[i][j]=max(f[i][j],f[i-1][j-1]+1);
return f[n][m];
;
1222. 密码脱落【未完成 DP】
781. 森林中的兔子【思维】
class Solution
public:
int numRabbits(vector<int>& answers)
map<int,int>mp;
int sum=0;
for(int i=0;i<answers.size();i++) mp[answers[i]]++;
for(auto i=mp.begin();i!=mp.end();i++)
int a=i->first;
int b=i->second;
int temp=(b+a)/(a+1)*(a+1);
sum+=temp;
return sum;
;
3192. 出现次数最多的数【签到】
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,x,a[N];
int main(void)
cin>>n;
for(int i=0;i<n;i++) cin>>x,a[x]++;
int ans=0,cnt=0;
for(int i=0;i<N;i++)
if(a[i]>cnt) cnt=a[i],ans=i;
cout<<ans;
return 0;
以上是关于2021春季每日一题week3 未完结的主要内容,如果未能解决你的问题,请参考以下文章