Keshawn_lu's Blog

Keshawn_lu's Blog

Become a better myself.

Leetcode 841. 钥匙和房间
题目简介:有 N 个房间,开始时你位于 0 号房间。每个房间有不同的号码:0,1,2,...,N-1,并且房间里可能有一些钥匙能使你进入下一个房间。 在形式上,对于每个房间 i 都有一个钥匙列表 rooms[i],每个钥匙 rooms[i][j] 由 [0,1,...,N-1] 中的一个整数表示,其中 N = rooms.length。 钥匙 rooms[i][j] = v 可以打开编号为 v 的房间。 最初,除 0 号房间外的其余所有房间都被锁住。 你可以自由地在房间之间来回走动。 如果能进入每个房间返回 true,否则返回 false。 示例 1: 123456789输入: [[1]...
Leetcode 557. 反转字符串中的单词 III
题目简介:给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例: 12输入:"Let's take LeetCode contest"输出:"s'teL ekat edoCteeL tsetnoc" 提示: 在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。 思路:每次找空格的位置,从而可以找到每个单词左右的位置,然后将其翻转过来。 需要注意的是最后还需要翻转一次(最后一个单词)。 tip: reverse()函数需要注意循环中的s[i + left],并且i从0...
Leetcode 214. 最短回文串
题目简介:给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。 示例 1: 12输入: "aacecaaa"输出: "aaacecaaa" 示例 2: 12输入: "abcd"输出: "dcbabcd" 思路:第一次尝试用KMP方法做题,有点头疼。 我们记s的逆转字符串为reverse_str,其实题目可以转换为s前缀和reverse_str后缀的最长公共部分,如下图所示: 这时我们可以将模式串定义为s + # + reverse_str(#用来分割...
Leetcode 657. 机器人能否返回原点
题目简介:在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。 注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。 示例 1: 123输入: "UD"输出: true解释:机器人向上移动一次,然后向下...
Leetcode 332. 重新安排行程
题目简介:给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必须从 JFK 开始。 说明: 如果存在多种有效的行程,你可以按字符自然排序返回最小的行程组合。例如,行程 [“JFK”, “LGA”] 与 [“JFK”, “LGB”]相比就更小,排序更靠前 所有的机场都用三个大写字母表示(机场代码)。 假定所有机票至少存在一种合理的行程。 示例 1: 12输入: [["MUC", "LHR"], [...
Leetcode 17. 电话号码的字母组合
题目简介:给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例: 12输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 思路:这题和昨天那题有异曲同工之妙,都要用到回溯。 深度优先搜索,定义一个curpos来表示当前指...
Leetcode 491. 递增子序列
题目简介:给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2。 示例: 12输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7], [4,7,7]] 说明: 给定数组的长度不会超过15。 数组中的整数范围是 [-100,100]。 给定数组中可能包含重复数字,相等的数字应该被视为递增的一种情况。 思路:又是做的头疼的一道题,深度优先搜索,每次记录当前遍历到的位置以及上一次访问的位置。 遍历结束的条件是当前的位置curpos == nu...
Leetcode 459. 重复的子字符串
题目简介:给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 示例 1: 12345输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。 示例 2: 123输入: "aba"输出: False 示例 3: 12345输入: "abcabcabcabc"输出: True解释: 可由子字符串 "abc" 重复四次构成。 (或者子字符串 "abcabc" 重复两次构成。) 思...
Leetcode 201. 数字范围按位与
题目简介:给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。 示例 1: 12输入: [5,7]输出: 4 示例 2: 12输入: [0,1]输出: 0 思路:其实这道题的核心就是找到两个数字用二进制表示时的公共前缀,因为范围内的数字是连续的,所以除了公共前缀,其余后面的部分,每个部位必有0出现,所以根据与运算的规则,都为0。 所以问题转换为了找公共前缀,我们可以先将两个数字向右位移,直至两个数字相同,此时的数字(二进制)便为公共前缀,然后再根据位移的步数再左移回去(即在后面补0)...
Leetcode 679. 24 点游戏
题目简介:你有 4 张写有 1 到 9 数字的牌。你需要判断是否能通过 *,/,+,-,(,) 的运算得到 24。 示例 1: 123输入: [4, 1, 8, 7]输出: True解释: (8-4) * (7-1) = 24 示例 2: 12输入: [1, 2, 1, 2]输出: False 注意: 除法运算符 / 表示实数除法,而不是整数除法。例如 4 / (1 - 2/3) = 12 。 每个运算符对两个数进行运算。特别是我们不能用 - 作为一元运算符。例如,[1, 1, 1, 1] 作为输入时,表达式 -1 - 1 - 1 - 1 是不允许的。 你不能将数字连接在一起。例如,输...
avatar
鸣蜩十九
Always
友链
CSDN BiliBili