2021春季每日一题【week5 未完结】
生活随笔
收集整理的這篇文章主要介紹了
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 未完结】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021春季每日一题【week4 完结】
- 下一篇: 2021春季每日一题【week6 未完结