Leetcode刷题 2021.01.21
Leetcode1079 活字印刷
你有一套活字字模 tiles,其中每个字模上都刻有一个字母 tiles[i]。返回你可以印出的非空字母序列的数目。
注意:本题中,每个活字字模只能使用一次。
今天的每日一题虽然是困难并查集,但是思路还是比较清晰的,最小生成树的kruskal算法。应该还有优化的解法吧,因为代码写的很烂就不放到博客里来了。
今天上海新增了三例确诊,辅导员也要求尽早回去了。不知道会不会又像去年一样,大半年不来学校了。那到时候来了就要毕业了。o(╥﹏╥)o
生命中的有些遇到的人就是这样,不知道什么时候就是最后一次见面了。
说回题目,典型的回溯算法,和之前的题目比较像,但是这道题是可以再从头开始回溯的,也要去重。所以整体代码其实变化不大,这种回溯题还是要认真分析一下。
class Solution {
int res = 0;
boolean[] isVisited;
public int numTilePossibilities(String tiles) {
char[] arr = tiles.toCharArray();
//剪枝的前提是排序
Arrays.sort(arr);
//标记数组,用来表示是否已经使用过了
isVisited = new boolean[arr.length];
helper(arr, 0);
return res;
}
private void helper(char[] arr, int index){
if (index >= arr.length)