【LeetCode Contest 144. 】1108. 1109. 1110. 1111

88 篇文章 0 订阅
50 篇文章 0 订阅

2道。

1108. Defanging an IP Address

签到题。
string的insert函数。

1109. Corporate Flight Bookings

模板题。
树状数组,区间更新,单点查询。
但我居然连赤果果的模板题也…调了半个多小时。

1110. Delete Nodes And Return Forest

比赛的时候觉得好难,今天晚上又自己写出来了。
就是一个dfs。重点在于,只需要返回每个子树的根结点。把在删除map中的节点标记为null就好了。有个要注意的点在于,二叉树的参数要用 * & , 这样才能修改原二叉树。

代码:

/**
 * 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:
    vector<TreeNode*> ans;
    
    vector<TreeNode*> delNodes(TreeNode* root, vector<int>& to_delete) {
        map<int, int> mp;
        int n = to_delete.size();
        for (int i=0; i<n; ++i) {
            mp[to_delete[i]] = 1;
        }
        dfs(root, mp, 1);
        return ans;
    }
    
    void dfs(TreeNode* & root, map<int, int>& mp, bool flag) {
        if (root == NULL) return;
        if (mp[root->val]) {
            dfs(root->left, mp, 1);
            dfs(root->right, mp, 1);
            root = NULL;
        }else {
            if (flag == 1) {
                ans.push_back(root);
                flag = 0;
            }
            dfs(root->left, mp, 0);
            dfs(root->right, mp, 0);
        }
    }
};

1111. Maximum Nesting Depth of Two Valid Parentheses Strings

直接标记所有括号的层数。奇数和偶数分为两组就好了。
好简单。。。为什么我想的时候觉得好难好难。

代码:

class Solution {
public:
    vector<int> maxDepthAfterSplit(string seq) {
        int n = seq.length();
        vector<int> ans(n, 0);
        vector<int> dep(n, 0);
        int cur = 0;
        int max_ = 0;
        
        for (int i=0; i<n; ++i) {
            if (seq[i] == '(') {
                cur++;
                dep[i] = cur;
            }else {
                dep[i] = cur;
                cur--;
            }
            max_ = max(max_, cur);
        }
    
        max_ /= 2;
        for (int i=0; i<n; ++i) {
            if (dep[i] <= max_) {
                ans[i] = 0;
            }else ans[i] = 1;
        }
        return ans;
    }
};

今天又是什么都没干的一天。
开始放暑假了可还行。开学就研二了呢。
多看论文,刷题,多写代码。
做一个养生女孩。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值