Java实现 LeetCode 753 破解保险箱(递归)
753. 破解保险箱
有一个需要密码才能打开的保险箱。密码是 n 位数, 密码的每一位是 k 位序列 0, 1, …, k-1 中的一个 。
你可以随意输入密码,保险箱会自动记住最后 n 位输入,如果匹配,则能够打开保险箱。
举个例子,假设密码是 “345”,你可以输入 “012345” 来打开它,只是你输入了 6 个字符.
请返回一个能打开保险箱的最短字符串。
示例1:
输入: n = 1, k = 2
输出: “01”
说明: "10"也可以打开保险箱。
示例2:
输入: n = 2, k = 2
输出: “00110”
说明: “01100”, “10011”, “11001” 也能打开保险箱。
提示:
n 的范围是 [1, 4]。
k 的范围是 [1, 10]。
k^n 最大可能为 4096。
PS:
该说不说,百度翻译都比这个强
class Solution {
   public static final int[] MASK = {0, 1, 10, 100, 1000};
    public String crackSafe(int n, int k) {
        M = MASK[n];
        StringBuilder sb = new StringBuilder();
        Hierholzer(0, k, new BitSet(), sb);
        for (int i = 0; i < n - 1; i++) sb.append(0);
        return sb.toString();
    }
    public int M;
    public void Hierholzer(int n, int k, BitSet bs, StringBuilder sb) {
        bs.set(n);
        int tail = n % 10;
        n = (n % M) * 10;
        for (int i = 0; i < k; i++, n++) {
            if (!bs.get(n)) Hierholzer(n, k, bs, sb);
        }
        sb.append(tail);
    }
}
												
											Java实现 LeetCode 753 破解保险箱(递归)的更多相关文章
- Java for LeetCode 044 Wildcard Matching
		
Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character. ...
 - Java for LeetCode 216 Combination Sum III
		
Find all possible combinations of k numbers that add up to a number n, given that only numbers from ...
 - Java for LeetCode 214 Shortest Palindrome
		
Given a string S, you are allowed to convert it to a palindrome by adding characters in front of it. ...
 - Java for LeetCode 212 Word Search II
		
Given a 2D board and a list of words from the dictionary, find all words in the board. Each word mus ...
 - Java for LeetCode 211 Add and Search Word - Data structure design
		
Design a data structure that supports the following two operations: void addWord(word)bool search(wo ...
 - Java for LeetCode 210 Course Schedule II
		
There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have prer ...
 - Java for LeetCode 200 Number of Islands
		
Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surro ...
 - Java for LeetCode 188 Best Time to Buy and Sell Stock IV【HARD】
		
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
 - Java for LeetCode 154 Find Minimum in Rotated Sorted Array II
		
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
 
随机推荐
- LeetCode--LinkedList--160. Intersection of Two Linked Lists(Easy)
			
160. Intersection of Two Linked Lists(Easy) 题目地址https://leetcode.com/problems/intersection-of-two-li ...
 - 【FPGA篇章二】FPGA开发流程:详述每一环节的物理含义和实现目标
			
欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 FPGA的开发流程是遵循着ASIC的开发流程发展的,发展到目前为止,FPGA的开发流程总体按照下图进行,有些步骤可能由于其在当前项目中的条件 ...
 - 第十章:Python高级编程-多线程、多进程和线程池编程
			
第十章:Python高级编程-多线程.多进程和线程池编程 Python3高级核心技术97讲 笔记 目录 第十章:Python高级编程-多线程.多进程和线程池编程 10.1 Python中的GIL 10 ...
 - 【Kafka】数据分区策略
			
数据分区策略 四种策略 一.指定分区号,数据会直接发送到所指定的分区 二.没有指定分区号,指定了数据的key,可以通过key获取hashCode决定数据发送到哪个分区 三.都没有指定的话,会采取rou ...
 - 【MySQL基础总结】索引的使用
			
索引的使用 概述 1.索引由数据库中一列或多列组合而成,其作用是提高对表中数据的查询速度 2.索引的优点是可以提高检索数据的速度 3.缺点是创建和维护索引需要耗费时间 4.所以索引可以提高查询速度,减 ...
 - 【FreeRTOS学习04】小白都能懂的 Queue Management 消息队列使用详解
			
消息队列作为任务间同步扮演着必不可少的角色: 相关文章 [FreeRTOS实战汇总]小白博主的RTOS学习实战快速进阶之路(持续更新) 文章目录 相关文章 1 前言 2 xQUEUE 3 相关概念 3 ...
 - dot 使用教程
			
dot使用教程 安装: windows: 安装后需要将安装文件的bin目录添加到命令行, 可以在命令行生成图片 linux: mac: dot和vscode 安装插件:Graphviz (dot) l ...
 - SpringCloud Netflix (五) : Hystrix 服务熔断和服务降级
			
什么是Hystrix 在分布式环境中,许多服务依赖项中的一些服务依赖不可避免地会失败.Hystrix是一个库,通过添加延迟容忍和容错逻辑,帮助您控制这些分布式服务之间的交互.Hystrix通过隔离服务 ...
 - docker 容器核心技术
			
容器的数据卷(volume)也是占用磁盘空间,可以通过以下命令删除失效的volume: [root@localhost]# sudo docker volume rm $(docker volume ...
 - kubernetes pod的弹性伸缩———基于pod自定义custom metrics(容器的IO带宽)的HPA
			
背景  自Kubernetes 1.11版本起,K8s资源采集指标由Resource Metrics API(Metrics Server 实现)和Custom metrics api(Promet ...