2021春季每日一题week5 未完结

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021春季每日一题week5 未完结相关的知识,希望对你有一定的参考价值。

目录

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春季每日一题week6 未完结

2021春季每日一题week3 未完结

2021春季每日一题 week2 未完结

2021春季每日一题 week1 未完结

2021春季每日一题week8 未完结

2021暑假每日一题 week5 完结