ARTS Week 15

Algorithm

本周的 LeetCode 题目为 22. 括号生成

题目简介:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。有效括号组合需满足:左括号必须以正确的顺序闭合。

输入:n = 3
输出:["((()))","(()())","(())()","()(())","()()()"]

本题使用回溯法,因为有左右两边括号,可以使用 leftright 两个变量来分别记录左括号和右括号的次数。当左括号小于 n 时,可以加入左括号;当 right < left 时,可以加入右括号。通过的代码如下:

class Solution {
    public List<String> generateParenthesis(int n) {
        List<String> ans = new ArrayList<>();
        backtracking(new StringBuilder(), 0, 0, n, ans);
        return ans;
    }

    public void backtracking(StringBuilder sb, int left, int right, int n, List<String> ans) {
        if (left+right == 2*n) {
            ans.add(sb.toString());
        }
        if (left < n) {
            sb.append('(');
            backtracking(sb, left+1, right, n, ans);
            sb.deleteCharAt(sb.length() - 1);
        }
        if (right < left) {
            sb.append(')');
            backtracking(sb, left, right+1, n, ans);
            sb.deleteCharAt(sb.length() - 1);
        }
    }
}

Review

本周 Review 的英文文章为:如何好好休息

作者在文中给出一些提高休息质量的建议:

  1. 改变对休息的态度。休息很重要,它将会让你更有创造力、拥有可持续的生活
  2. 确立明确的界限。减少在晚上和周末在工作电话和电子邮件的检查,分割开工作时间和个人时间。可以制定一个工作和休息的时间表
  3. 培养深度爱好。你可以寻找到新的爱好,如爬山、绘画等来作为休息
  4. 不要忽视睡眠和小睡
  5. 鼓励别人和你一起休息

Tip

StringBufferStringBuilder 的区别:StringBuffer 是线程安全的,而 StringBuilder 并不是线程安全的。

Share

感觉自己最近需要整理回顾下,来深入的反思一下自己,虽然比较稳定,但感觉又陷入了某个心理舒适区,因此需要反思一下。

上一篇:216. 组合总和 III


下一篇:17. 电话号码的字母组合