2019.06.15-2019.06.22

Algorithm

1079. Letter Tile Possibilities

class Solution {
    public int numTilePossibilities(String tiles) {
        int [] chars = new int[26];
        for (char c: tiles.toCharArray()) {
            chars[c - 'A']++;
        }

        return dfs(chars);
    }

    private int dfs(int[] chars) {
        int sum = 0;
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] == 0) {
                continue;
            }
            sum++;
            chars[i]--;
            sum += dfs(chars);
            chars[i]++;
        }
        return sum;
    }
}

Review

https://www.developer.com/java/data/what-is-the-java-priority-queue.html
介绍了PriorityQueue,这个队列比较少用到。顾名思义是一个优先级队列,支持自定义排序规则,内部逻辑是通过维护一个二叉小根堆实现,保证每次队列头都是最优先(小)的元素。
一开始误解这个类是全排序的队列,发现并不是,只是首个元素保证队列中最小。

Tip

线上导线下数据库工具失效,或者要排队的情况下,可以从线上库导出SQL语句,再导入线下

Share

Java 8 Streams map()
语言的语法特性越用会越熟练,最近在有意使用Java8 API中的stream,先从功能强大的map()方法开始。学到的最复杂的是从一个bean的list转化成另一个bean的list。

你可能感兴趣的:(2019.06.15-2019.06.22)