每周学算法/读英文/知识点心得分享 3.4 - 3.8

 每周一个 Algorithm,Review 一篇英文文章,总结一个工做中的技术 Tip,以及 Share 一个传递价值观的东西!html

Algorithm: 学习算法

题目:Generate Parenthesesjava

题目大意:给出n对小括号,求出括号匹配的状况,用列表存储并返回,例如:n=3时,答案应为:算法

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

解题过程:题目要求给出全部可能的组合,优先考虑递归法,递归终止条件是 字符长度达到 n × 2。考虑只有左右括号两种字符,考虑递归状况:学习

当左括号数量小于n(这好理解,n对括号须要n个左括号),添加左括号。测试

当右括号数量小于左括号数量(为何不是小于n?由于这是无效情形),添加右括号。spa

还有其余状况吗?考虑下边界状况, 彷佛没有了。code

本身写一写测试用例验证结果。orm

解法:htm

class Solution {
    public List<String> generateParenthesis(int n) {
        List<String> result = new ArrayList<>();
        if (n > 0) {
            traceback(result, 0, 0, "", n);
        }
        return result;
    }

    /**
     * find all possible solutions
     * @param result
     * @param left total left parentheses
     * @param right total right parentheses
     * @param out current output
     * @param max max
     */
    private void traceback(List<String> result, int left, int right, String out, int max) {
        if (out.length() ==  max * 2) {
            result.add(out);
            return;
        }

        if (left < max) {
            traceback(result, left + 1, right, out + "(", max);
        }

        if (right < left) {
            traceback(result, left, right + 1, out + ")", max);
        }

    }
}

 

Review: 学习英文

无,暂没想到想读的英文材料,博客?技术文章?小说?blog

Tips: 知识点

Java Ring Buffer 原理及实现 http://tutorials.jenkov.com/java-performance/ring-buffer.html

这是以前读消息队列里的基础知识之一,用Java实现了两种方式的ring buffer,我的喜欢第一种 Fill Count 的方式,比较巧妙。

Share: 价值观

最近体会交付的含义是:可以保证没有任何问题地让功能上线。

有一个功能作了比较久,年前就开始,一直到今天还在跑测试。中间通过一次需求的大修改,最近一周又频繁调整需求,致使我这一周加了两天班,结果本应该下周交付的功能到如今还有没法上线的风险。

应当采起的态度是过程当中及时跟进,有大调整要跟组长及时反馈,不能等最后一周再去反馈问题。

相关文章
相关标签/搜索