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。