2021春季每日一题week5 未完结
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021春季每日一题week5 未完结相关的知识,希望对你有一定的参考价值。
目录
- 179. 最大数【贪心】
- 1453. 移掉K位数字【贪心 / 思维】
- 783. 二叉搜索树节点最小距离
- 71. 二叉树的深度
- 208. 实现 Trie (前缀树)【未完成】
- 142. 前缀统计【trie】
- 213. 打家劫舍 II【未完成】
- 1055. 股票买卖 II【贪心】
- 87. 扰乱字符串【未完成】
- 94. 递归实现排列型枚举
179. 最大数【贪心】
class Solution
public:
string largestNumber(vector<int>& nums)
sort(nums.begin(),nums.end(),[](int x,int y)
string a=to_string(x),b=to_string(y);
return a+b>b+a;
);
string ans;
for(int i=0;i<nums.size();i++) ans+=to_string(nums[i]);
while(ans.size()>1&&ans[0]=='0') ans=ans.substr(1);
return ans;
;
1453. 移掉K位数字【贪心 / 思维】
#include<bits/stdc++.h>
using namespace std;
int k;
int main(void)
string res="0";
string s; cin>>s>>k;
for(int i=0;i<s.size();i++)
while(k&&s[i]<res.back())//先清除逆序的
res.pop_back();
k--;
res+=s[i];
//这时候我们的res是单调递增的
while(k--) res.pop_back();//从后向前删
while(res.size()>1&&res[0]=='0') res=res.substr(1);//去除前导零
cout<<res;
return 0;
783. 二叉搜索树节点最小距离
/**
* Definition for a binary tree node.
* struct TreeNode
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr)
* TreeNode(int x) : val(x), left(nullptr), right(nullptr)
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right)
* ;
*/
class Solution
public:
int minDiffInBST(TreeNode* root)
vector<int>ve; dfs(root,ve);
sort(ve.begin(),ve.end());
int ans=1e9;
for(int i=1;i<ve.size();i++) ans=min(ans,ve[i]-ve[i-1]);
return ans;
void dfs(TreeNode* root,vector<int>& ve)
if(!root) return;
ve.push_back(root->val);
if(root->left) dfs(root->left,ve);
if(root->right) dfs(root->right,ve);
;
71. 二叉树的深度
/**
* Definition for a binary tree node.
* struct TreeNode
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL)
* ;
*/
class Solution
public:
int ans=0;
void dfs(TreeNode* root,int len)
if(!root) return;
ans=max(ans,len);
if(root->left) dfs(root->left,len+1);
if(root->right) dfs(root->right,len+1);
int treeDepth(TreeNode* root)
dfs(root,1);
return ans;
;
208. 实现 Trie (前缀树)【未完成】
class Trie
public:
Trie()
void insert(string word)
bool search(string word)
bool startsWith(string prefix)
;
/**
* Your Trie object will be instantiated and called as such:
* Trie* obj = new Trie();
* obj->insert(word);
* bool param_2 = obj->search(word);
* bool param_3 = obj->startsWith(prefix);
*/
142. 前缀统计【trie】
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int son[N][26],cnt[N],idx;
void insert(string s)
int p=0;
for(int i=0;i<s.size();i++)
int u=s[i]-'a';
if(!son[p][u]) son[p][u]=++idx;
p=son[p][u];
cnt[p]++;
int query(string s)
int p=0,sum=0;
for(int i=0;i<s.size();i++)
int u=s[i]-'a';
if(!son[p][u]) return sum;
p=son[p][u];
sum+=cnt[p];
return sum;
int main(void)
int n,m; cin>>n>>m;
for(int i=0;i<n;i++)
string s; cin>>s;
insert(s);
while(m--)
string s; cin>>s;
cout<<query(s)<<endl;
return 0;
213. 打家劫舍 II【未完成】
1055. 股票买卖 II【贪心】
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],ans,n;
int main(void)
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n-1;i++) if(a[i]<a[i+1]) ans+=abs(a[i]-a[i+1]);
cout<<ans;
return 0;
87. 扰乱字符串【未完成】
94. 递归实现排列型枚举
#include<bits/stdc++.h>
using namespace std;
int a[30],vis[30],n;
void dfs(int index)
if(index==n)
for(int i=0;i<n;i++) cout<<a[i]<<" ";
cout<<endl;
return;
for(int i=1;i<=n;i++)
if(!vis[i])
a[index]=i;
vis[i]=1;
dfs(index+1);
vis[i]=0;
int main(void)
cin>>n;
dfs(0);
return 0;
以上是关于2021春季每日一题week5 未完结的主要内容,如果未能解决你的问题,请参考以下文章