查看: 878| 回复: 0
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] 这个题的Time/Space complexities怎么算啊?

🔗
X88 | 只看该作者 |倒序浏览
全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
LC 301. Remove Invalid Parentheses

      solution: 0ms 100.00%, 9.3MB 95.83%

class Solution {
public:
    vector<string> removeInvalidParentheses(string s) {
        /// recursion forward (')') and backward ('(')

        vector<string> res;
        remove_invalid(s, 0, 0, {'(', ')'}, res);
        return res;
    }

    void remove_invalid(const string& s, int last_idx, int last_rem,
                        const vector<char>& bracket, vector<string>& res) {
        int cnt = 0; // count of the first bracket

        for (int i = last_idx; i < s.size(); ++i) {
            if (s[i] == bracket[0]) ++cnt;
            else if (s[i] == bracket[1]) --cnt;
            
            if (cnt >= 0) continue;  // no obvious violation yet

            // bracket[1] violates, remove
            for (int j = last_rem; j <= i; ++j) {
                if (s[j] == bracket[1] && (j == last_rem || s[j] != s[j-1])) {
                    remove_invalid(s.substr(0, j) + s.substr(j+1), i, j, bracket, res);
                }
            }
            // all done. don't need to go back.
            return;
        }
  
        // up to here meaning need to remove extra left brackets
        // A trick is used to reverse the string and treat '(' as ')'.
        string s_rev = string(s.rbegin(), s.rend());
        if (bracket[0] == '(') remove_invalid(s_rev, 0, 0, { ')', '(' }, res);
        else res.push_back(s_rev); // save result (must've been reversed twice already)
    }
};
-----------------------------------------

Space 应该是O(N)吧(for string s_rev)?
Time呢?O(2 * N^2) ??




上一篇:做题时常用的java api总结 适合短时间内快速复习java语法
下一篇:Codility 有题库吗?怎么评分的?
您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表