美文网首页
LeetCode 144周赛

LeetCode 144周赛

作者: crishawy | 来源:发表于2019-10-07 17:26 被阅读0次

1. 题目列表

IP 地址无效化

一行代码。

代码:

class Solution {
    public String defangIPaddr(String address) {
        return address.replace(".", "[.]");
    }
}

3. 航班预订统计

 /*
    题意:
        给出多个区间的加数,求每一个位置的和。可转换为公交车站上下车问题。
    
    思路:
        定义change[i]数组表示到达第i个公交站台上人数的变化
            change[i] > 0,表示在i站台上车change[i]人,
            change[i] < 0,表示在i站台下车change[i]人。
        遍历bookings数组,记录每个存在上下站的公交站台的人数变化情况,则[i, j, k]表示在第i站上车k人,在第j + 1站台下车k人
    然后,每个站台的总人数:
        cnt[i] = cnt[i - 1] + change[i],i = 1, 2, ..., n - 1,
        cnt[0] = change[0]
        
    收获:
        该题是典型的给出区间数据,求每个点的当前值问题,对于此类问题可类比于公交站上下车问题,
    将公交车站看成是一个大容器,每个点的值即容器当前值,区间数据相当于区间两侧的上下车情况,接着累加求和即可。
*/

代码:

class Solution {
public:
    vector<int> corpFlightBookings(vector<vector<int>>& bookings, int n) {
        int change[20010];
        memset(change, 0, sizeof(change));
        for (vector<int> booking: bookings){
            change[booking[0]] += booking[2];
            change[booking[1] + 1] -= booking[2];
        }
        vector<int> res(n);
        res[0] = change[1];
        for (int i = 1; i < n; i++)
            res[i] = res[i - 1] + change[i + 1]; // 注意下标是从0开始
        return res;
    }
};

4. 有效括号的嵌套深度

    题意:
        给定一个括号字符串S,求一个容量为2的字符串S的划分串,并使得在该划分下max(depth(A), depth(B))达到最小。
    即找出一个划分串,使得两个划分串的深度尽量接近.
    
    思路:
        先求出整个串的深度d, d/2就是其中一个串A的深度, d - d/2是另外一个串B的深度。
    遍历整个S,如果左括号数大于d/2,则分给另一个串B,否则分给串A,如果遇到右括号,那么当前的左括号数-1

代码:

class Solution {
public:
    vector<int> maxDepthAfterSplit(string seq) {
        int d = 0, cnt = 0;
        for (int i = 0; i < seq.length(); i++){
            if (seq[i] == '('){
                cnt ++;
                d = max(d, cnt);
            }else{
                cnt --;
            }
        }
        vector<int> res(seq.length());
        int depthA = d / 2;
        cnt = 0;
        for (int i = 0; i < seq.length(); i++){
            if (seq[i] == '('){
                if (++cnt > depthA){
                    res[i] = 1;
                }
            }else{
                if (cnt > depthA)
                    res[i] = 1;
                cnt --;
            }
        }
        return res;
    }
};

相关文章

  • leetcode周赛

    第一周 1029 可被五整除的二进制前缀 每次循环将前缀乘以二即可题型:数学 1030 链表中的下一个最大节点 要...

  • 5670. 互质树

    LeetCode 第46场周赛 dfs+一点利用数据范围的trick

  • LeetCode 122周赛

    1. 题目列表 查询后的偶数和(简单模拟) 从叶结点开始的最小字符串(二叉树深搜 + 字符串比较) 区间列表的交集...

  • LeetCode 149 周赛

    1. 题目列表 一年中的第几天(简单) 投掷骰子的N种方法(背包问题求方案数) 单字符重复子串的最大长度 子数组种...

  • LeetCode 143周赛

    1. 题目列表 分糖果 II(简单模拟) 二叉树寻路(z型规律,完全二叉树的性质) 填充书架(dp,二重循环dp,...

  • LeetCode 144周赛

    1. 题目列表 IP 地址无效化(一行代码) 航班预订统计(问题转换,给定区间数据,求每个点的值,公交车站问题)重...

  • LeetCode 152周赛

    1. 题目列表 质数排列(简单排列组合) 健身计划评估(简单模拟) 构建回文串检测(字符个数的前缀和) 猜字谜(字...

  • LeetCode 132周赛

    1. 题目列表 除数博弈(一维简单动态规划) 节点与其祖先之间的最大差值(DFS,求最大差值) 最长等差数列(二维...

  • LeetCode 128周赛

    1. 题目列表 十进制整数的反码(进制转换) 总持续时间可被 60 整除的歌曲(数组hash以及简单的排列组合) ...

  • LeetCode 97周赛

    1. 题目列表 两句话中的不常见单词(模拟hashmap) 螺旋矩阵 III(二维网格行走模拟) 可能的二分法(判...

网友评论

      本文标题:LeetCode 144周赛

      本文链接:https://www.haomeiwen.com/subject/szfmyctx.html