• LeetCode 第 211 场周赛


    两个相同字符之间的最长子字符串

    模拟 枚举

     1 class Solution {
     2 public:
     3     int maxLengthBetweenEqualCharacters(string s) {
     4         int n = s.size();
     5         int ans = -1;
     6         for (int i = 0; i < n; i++) {
     7             for (int j = i + 1; j < n; j++) {
     8                 if (s[i] == s[j]) {
     9                     ans = max(ans, j - i - 1);
    10                 }
    11             }
    12         }
    13         return ans;
    14     }
    15 };
    View Code

    执行操作后字典序最小的字符串

    DFS + 剪枝

     1 class Solution {
     2 public:
     3     string ans;
     4     map<string, int> m;
     5     void dfs(string s, int a, int b) {
     6         if (m[s]) return ;
     7         m[s] = 1;
     8         ans = min(ans, s);
     9         string str = s;
    10         for (int i = 1; i < str.size(); i += 2) {
    11             int x = (str[i] - '0' + a) % 10;
    12             str[i] = (x + '0');
    13         }
    14         dfs(str, a, b);
    15         str = s.substr(s.size() - b, b) + s.substr(0, s.size() - b);
    16         dfs(str, a, b);
    17     }
    18     string findLexSmallestString(string s, int a, int b) {
    19         ans = s;
    20         dfs(s, a, b);
    21         return ans;
    22     }
    23 };
    View Code

    无矛盾的最佳球队

    先按年龄为第一优先级从小到大排序, 再按分数为第二优先级从小到大排序, 保证能形成分数递增, 把题目转换成最长递增子序列的题目, 再走下DP就好了

     1 class Solution {
     2 public:
     3     struct node{
     4         int scores, ages;
     5     }q;
     6     static bool cmp(node x, node y) {
     7         if (x.ages == y.ages) {
     8             return x.scores < y.scores;
     9         }
    10         return x.ages < y.ages;
    11     }
    12     int bestTeamScore(vector<int>& scores, vector<int>& ages) {
    13         int n = ages.size(), ans = 0;
    14         vector<node> p;
    15         vector<int> dp(n, 0);
    16         for (int i = 0; i < n; i++) {
    17             q.ages = ages[i];
    18             q.scores = scores[i];
    19             p.push_back(q);
    20         }
    21         sort(p.begin(), p.end(), cmp);
    22         for (int i = 0; i < n; i++) {
    23             for (int j = 0; j < i; j++) {
    24                 if (p[j].scores <= p[i].scores) dp[i] = max(dp[i], dp[j]);
    25             }
    26             dp[i] += p[i].scores;
    27             ans = max(ans, dp[i]);
    28         }
    29         return ans;
    30     }
    31 };
    View Code

    带阈值的图连通性

    思考 + 并查集

     1 class Solution {
     2 public:
     3     int fi(int x, vector<int>& fa) {
     4         return x == fa[x] ? x : fa[x] = fi(fa[x], fa);
     5     }
     6     vector<bool> areConnected(int n, int threshold, vector<vector<int>>& queries) {
     7         vector<bool> ans;
     8         vector<int> fa(n + 1, 0);
     9         for (int i = 1; i <= n; i++) fa[i] = i;
    10         for (int i = threshold + 1; i <= n; i++) {
    11             for (int j = 2 * i; j <= n; j += i) {
    12                 int fx = fi(i, fa), fy = fi(j, fa);
    13                 if (fx != fy) fa[fx] = fy;    
    14             }
    15         }
    16         int m = queries.size();
    17         for (int i = 0; i < m; i++) {
    18             int fx = fi(queries[i][0], fa), fy = fi(queries[i][1], fa);
    19             ans.push_back(fx == fy);
    20         }
    21         return ans;
    22     }
    23 };
    View Code
  • 相关阅读:
    Verilog模块概念和实例化#转载自Jason from Lofter
    P4-verilog实现mips单周期CPU
    P0-Logisim简单部件与有限状态机
    终——提问回顾与个人总结
    技术博客——PyPDF2 & Reportlab 使用
    结对——软工第一次结对项目
    分析——个人第二次博客作业
    交点——软工第一次个人项目作业
    启——软工第一次个人博客作业
    再会,旧时光——软工热身作业
  • 原文地址:https://www.cnblogs.com/pavtlly/p/13879891.html
Copyright © 2020-2023  润新知