每週學算法/讀英文/知識點心得分享 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: 價值觀

最近體會交付的含義是:可以保證沒有任何問題地讓功能上線。

有一個功能作了比較久,年前就開始,一直到今天還在跑測試。中間通過一次需求的大修改,最近一週又頻繁調整需求,致使我這一週加了兩天班,結果本應該下週交付的功能到如今還有沒法上線的風險。

應當採起的態度是過程當中及時跟進,有大調整要跟組長及時反饋,不能等最後一週再去反饋問題。

相關文章
相關標籤/搜索