错误的集合
力扣 645. 错误的集合题目说明
集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。
给定一个数组 nums 代表了集合 S 发生错误后的结果。
请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。
示例示例 1:
12输入:nums = [1,2,2,4]输出:[2,3]
示例 2:
12输入:nums = [1,1]输出:[1,2]
笔者理解此题是一道数组算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,笔者采用了朴素解法,让我们来看看具体如何实现的吧。
实现1234567891011121314151617181920212223242526272829303132class Solution { /* * 数组 * 排序 */ public int[] findErrorNums(int[] nums) { Arrays.sort(nums); ...
根据字符出现频率排序
力扣 451. 根据字符出现频率排序题目说明
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。
示例示例 1:
123456789输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。
示例 2:
123456789输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。
示例 3:
123456789输入:"Aabb"输出:"bbAa"解释:此外,"bbaA"也是一个有效的答案,但" ...
雪糕的最大数量
力扣 1833. 雪糕的最大数量题目说明
夏日炎炎,小男孩 Tony 想买一些雪糕消消暑。
商店中新到 n 支雪糕,用长度为 n 的数组 costs 表示雪糕的定价,其中 costs[i] 表示第 i 支雪糕的现金价格。Tony 一共有 coins 现金可以用于消费,他想要买尽可能多的雪糕。
给你价格数组 costs 和现金量 coins ,请你计算并返回 Tony 用 coins 现金能够买到的雪糕的 最大数量 。
注意:Tony 可以按任意顺序购买雪糕。
提示:
costs.length == n
1 <= n <= 105
1 <= costs[i] <= 105
1 <= coins <= 108
示例示例 1:
123输入:costs = [1,3,2,4,1], coins = 7输出:4解释:Tony 可以买下标为 0、1、2、4 的雪糕,总价为 1 + 3 + 2 + 1 = 7
示例 2:
123输入:costs = [10,6,8,7,7,8], coins = 5输出:0解释:Tony 没有足够的钱买任何一支雪糕。
...
传递信息
力扣 LCP 07. 传递信息题目说明
小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下:
有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0
每个玩家都有固定的若干个可传信息的其他玩家(也可能没有)。传信息的关系是单向的(比如 A 可以向 B 传信息,但 B 不能向 A 传信息)。
每轮信息必须需要传递给另一个人,且信息可重复经过同一个人
给定总玩家数 n,以及按 [玩家编号,对应可传递玩家编号] 关系组成的二维数组 relation。返回信息从小 A (编号 0 ) 经过 k 轮传递到编号为 n-1 的小伙伴处的方案数;若不能到达,返回 0。
提示:
2 <= n <= 10
1 <= k <= 5
1 <= relation.length <= 90, 且 relation[i].length == 2
0 <= relation[i][0],relation[i][1] < n 且 relation[i][0] != relation[i][1]
示例示例 1:
...
Excel表列名称
力扣 168. Excel表列名称题目说明
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:
12345678A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28 ...
提示:
1 <= columnNumber <= 2^31 - 1
示例示例 1:
12输入:columnNumber = 1输出:"A"
示例 2:
12输入:columnNumber = 28输出:"AB"
示例 3:
12输入:columnNumber = 701输出:"ZY"
示例 4:
12输入:columnNumber = 2147483647输出:"FXSHRXW"
笔者理解此题是一道数学算法问题,在力扣题库中被定义为简单题。
解法当笔者阅读完此题后,发现此题是经典的进制转化加了一点小坑,要注意这里的A是从1开始,所以进行进制转化时,需要多一步操作,让我们来看看具体如何实 ...
打开转盘锁
力扣 752. 打开转盘锁题目说明
你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' 。每个拨轮可以自由旋转:例如把 '9' 变为 '0','0' 变为 '9' 。每次旋转都只能旋转一个拨轮的一位数字。
锁的初始数字为 '0000' ,一个代表四个拨轮的数字的字符串。
列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。
字符串 target 代表可以解锁的数字,你需要给出解锁需要的最小旋转次数,如果无论如何不能解锁,返回 -1 。
提示:
1 <= deadends.length <= 500
deadends[i].length == 4
target.l ...
二进制中1的个数
力扣 剑指 Offer 15. 二进制中1的个数题目说明
请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。
提示:
输入必须是长度为 32 的 二进制串 。
示例示例 1:
123输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。
示例 2:
123输入:00000000000000000000000010000000输出:1解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。
示例 3:
123输入:11111111111111111111111111111101输出:31解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1 ...
字符串的排列
力扣 剑指 Offer 38. 字符串的排列题目说明
输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
限制:
1 <= s 的长度 <= 8
示例12输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]
笔者理解此题是一道DFS算法问题,在力扣题库中被定义为中等题。
解法当笔者阅读完此题后,发现此题是比较经典的DFS题目,让我们来看看具体如何实现的吧。
实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253class Solution { /* * DFS */ List<String> list; public ...
二进制手表
力扣 401. 二进制手表题目说明
二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。
例如,下面的二进制手表读取 "3:25" 。
(图源:WikiMedia - Binary clock samui moon.jpg ,许可协议:Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) )
给你一个整数 turnedOn ,表示当前亮着的 LED 的数量,返回二进制手表可以表示的所有可能时间。你可以 按任意顺序 返回答案。
小时不会以零开头:
例如,"01:00" 是无效的时间,正确的写法应该是 "1:00" 。
分钟必须由两位数组成,可能会以零开头:
例如,"10:2" 是无效的时间,正确的写法应该是 "10:02" 。
示例示例 1:
12输入:turnedOn = 1输出:["0:01",&q ...
皇位继承顺序
力扣 1600. 皇位继承顺序题目说明
一个王国里住着国王、他的孩子们、他的孙子们等等。每一个时间点,这个家庭里有人出生也有人死亡。
这个王国有一个明确规定的皇位继承顺序,第一继承人总是国王自己。我们定义递归函数 Successor(x, curOrder) ,给定一个人 x 和当前的继承顺序,该函数返回 x 的下一继承人。
12345Successor(x, curOrder): 如果 x 没有孩子或者所有 x 的孩子都在 curOrder 中: 如果 x 是国王,那么返回 null 否则,返回 Successor(x 的父亲, curOrder) 否则,返回 x 不在 curOrder 中最年长的孩子
比方说,假设王国由国王,他的孩子 Alice 和 Bob (Alice 比 Bob 年长)和 Alice 的孩子 Jack 组成。
一开始, curOrder 为 ["king"].
调用 Successor(king, curOrder) ,返回 Alice ,所以我们将 Alice 放入 curOrder 中,得到 ...









