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)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值