• 2020-09-30 刷题记录


    701. 二叉搜索树中的插入操作

    思路:

    (dfs)

    代码:

    /**
     * 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:
        
        TreeNode* insertIntoBST(TreeNode* root, int val) {
            if(!root) root = new TreeNode(val);
            else if(val < root->val) root->left = insertIntoBST(root->left, val);
            else root->right = insertIntoBST(root->right, val);
            return root;
        }
    };
    

    Cow and Message

    原题链接: CodeForces - 1307C

    思路:

    首先可以确定的是隐藏的字符串的长度一定不超过 (2)(因为如果存在比 (2) 还长的话,那么其中就可以得到长度为 (2) 的隐藏字符串)。

    根据上述的结论,设 (cnt[i][j]):在 (s_1)(s_i) 中,字符 (j) 出现的个数。

    同时记录出每个字符出现的位置。

    我们枚举长度为 (2) 的字符串可能出现的情况,然后计算出对应的结果。

    最后再和长度为 (1) 的比较即可。

    代码:

    const int N = 1e5 + 10;
    
    char s[N];
    ll cnt[N][26];
    vector<int> rec[26];
    
    int main() {
        
        scanf("%s", s + 1);
        int n = strlen(s + 1);
        memset(cnt, 0, sizeof cnt);
        for(int i = 1; i <= n; i ++) {
            for(int j = 0; j < 26; j ++) cnt[i][j] = cnt[i - 1][j];
            cnt[i][s[i] - 'a'] ++;
            rec[s[i] - 'a'].pb(i);
        }
        ll ans = 0;
        for(int i = 0; i < 26; i ++) {
            for(int j = 0; j < 26; j ++) {  // 枚举字符串 ji 的情况。
                ll tmp = 0;
                for(auto it : rec[i]) {
                    tmp += cnt[it - 1][j]; // 该位置下的字符 i 前面有多少个字符 j。
                }
                ans = max(ans, tmp);
            }
        }
        for(int i = 0; i < 26; i ++) ans = max(ans, cnt[n][i]);
        cout << ans << endl;
        return 0;
    }
    
  • 相关阅读:
    两道简单的机试题目
    C#二维数组(矩形数组,交错数组)
    用实例展示left Join,right join,inner join,join,cross join,union 的区别
    React 中的 Redux 详解:
    react 组件通信:
    vue 入门, todoList
    Vue 动画
    vue 框架,入门必看
    koa2 的使用方法:(一)
    git 的使用:
  • 原文地址:https://www.cnblogs.com/nonameless/p/13756861.html
Copyright © 2020-2023  润新知