
Leetcode
一个莫得感情的代码机器
愿你有故乡
展开
-
1027. 最长等差数列
题意:给定一个整数数组 A,返回 A 中最长等差子序列的长度。回想一下,A 的子序列是列表 A[i_1], A[i_2], …, A[i_k] 其中 0 <= i_1 < i_2 < … < i_k <= A.length - 1。并且如果 B[i+1] - B[i]( 0 <= i < B.length - 1) 的值都相同,那么序列 B 是等差的。...原创 2019-12-10 10:03:05 · 183 阅读 · 0 评论 -
386. 字典序排数
题意:给定一个整数 n, 返回从 1 到 n 的字典顺序。例如,给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。思路:10叉树的先序遍历code:class Solution: def lexicalOrder(self, n: int) ...原创 2019-12-09 11:00:46 · 162 阅读 · 0 评论 -
334. 递增的三元子序列
题意:给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。思路:维护一个值–...原创 2019-12-07 15:38:49 · 182 阅读 · 0 评论 -
1002. 查找常用字符
题意:给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。思路:以一个原始字符串为底,查找其他字符串中的数量取最小值code:class Solution: def commonChars(self,...原创 2019-12-04 09:07:13 · 163 阅读 · 0 评论 -
657. 机器人能否返回原点
题意:在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使...原创 2019-12-04 08:48:16 · 119 阅读 · 0 评论 -
938. 二叉搜索树的范围和
题意:给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。二叉搜索树保证具有唯一的值。思路:题意不难,但是对python的因为是的动态语言,所以不会优先使用全局变量,所以要指定变量code:class Solution(object): def rangeSumBST(self, root, L, R): self.ans = 0 ...原创 2019-11-30 10:54:48 · 126 阅读 · 0 评论 -
79. 单词搜索
题意:给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。思路:记忆化搜索dfs或者bfs内存可以用hash表优化 但是没有必要注意边界条件code:class Solution: def exist(self, board: L...原创 2019-11-30 10:39:10 · 130 阅读 · 0 评论 -
443. 压缩字符串
题意:给定一组字符,使用原地算法将其压缩。压缩后的长度必须始终小于或等于原数组长度。数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。在完成原地修改输入数组后,返回数组的新长度。!!!!而且要修改原list 大坑!!!!!思路:双指针遍历即可code:class Solution: def compress(self, chars: List[str]) ...原创 2019-11-30 10:04:54 · 96 阅读 · 0 评论 -
263. 丑数
题意:丑数就是只包含质因数 2, 3, 5 的正整数。思路:模拟即可code:class Solution: def isUgly(self, num: int) -> bool: if num <= 0: return False while num % 2 == 0: num //= 2...原创 2019-11-29 09:43:12 · 104 阅读 · 0 评论 -
338. 比特位计数
题意:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。思路:通过比特位对比 你会发现其实每次都是除了高位变化,其实其他位置一直 再重复之前的计数 这样就很容易利用之前的已经计算好的答案了。code:class Solution: def countBits(self, num: int) -> ...原创 2019-11-29 09:29:39 · 104 阅读 · 0 评论 -
191. 位1的个数
题意:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。思路:模拟即可 对比其二进制位置code:class Solution: def hammingWeight(self, n: int) -> int: ans = 0 while n > 0: ans +...原创 2019-11-29 09:09:54 · 122 阅读 · 0 评论 -
709. 转换成小写字母
题意:实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。思路:水题,我懒得手写判断了就直接调用原始函数code:class Solution: def toLowerCase(self, str: str) -> str: return str.lower()...原创 2019-11-28 16:53:40 · 114 阅读 · 0 评论 -
154. 寻找旋转排序数组中的最小值 II
153的进阶版本题意:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。注意数组中可能存在重复的元素思路 由于一个重复会影响 mid的判定会使得我们跳过最小值所在的区间所以只能通过不断地减小边界试探 r的最小点 最坏情况和遍历几乎相同还是得注意可能数组没有进行旋转...原创 2019-11-28 12:52:49 · 129 阅读 · 0 评论 -
153. 寻找旋转排序数组中的最小值
题意:找出数组中的最小值思路:二分 找出数组序列中最右的最大值,最左边的最小值ps:有点坑,数组可能不旋转code:class Solution: def findMin(self, nums: List[int]) -> int: l = 0 r = len(nums) - 1 mid = (l + r) /...原创 2019-11-28 11:25:17 · 101 阅读 · 0 评论 -
152. 乘积最大子序列
题意:给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。思路:维护最大值和最小值因为存在复数所以,正数最大值可能乘以当前值会变成当前最小值同理负数的最小值可能乘以当前值会变成当前正最大值code:class Solution: def maxProduct(self, nums: List[int]) -> int: ...原创 2019-11-28 11:05:04 · 108 阅读 · 0 评论 -
151. 翻转字符串里的单词
题意:给定一个字符串,逐个翻转字符串中的每个单词。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。思路:1.字符串以空格切割2.切割出来的字符串反转3.去除字符串内部空格4.跳过空字符串code:class Solution: def reverseWords(self, s: str...原创 2019-11-28 10:04:02 · 94 阅读 · 0 评论 -
937. 重新排列日志文件
重新排列日志文件题意:给你n串字符串,每个字符串中第二个关键子为数字顺序不变放在末尾若都为字母 则比较第二个关键字 若二个相同比较第三个关键字 依次类推 若后面关键字相同 则比较第一个关键字思路:将第二个关键字位数字的分开到末尾将第二个关键字及后面的关键子看成字符串与第一个关键字组合成二元组进行排序题意有些晦涩,看了好久才懂code:class Solution: def...原创 2019-11-27 20:35:02 · 131 阅读 · 0 评论 -
LCP 1. 猜数字
题意:水题思路:code:class Solution: def game(self, guess: List[int], answer: List[int]) -> int: ans = 0 for i in range(3): if guess[i] == answer[i]: a...原创 2019-11-27 12:09:55 · 119 阅读 · 0 评论 -
380. 常数时间插入、删除和获取随机元素
题意:设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。1.insert(val):当元素 val 不存在时,向集合中插入该项。2.remove(val):元素 val 存在时,从集合中移除该项。3.getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回。思路:两个hash表 第一个维护位置和第二个充当数组的作用code:class Rand...原创 2019-11-27 11:51:10 · 118 阅读 · 0 评论 -
1025. 除数博弈
除数博弈题意:给你一个数字N每次轮流操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。N= N - x 。直到一方不能操作。思路:博弈问题先手时候若为奇数,减去奇数的因子只能变成偶数偶数可以自己选择1或者2调整数字奇数偶数所以先手奇数的话是必败策略。code:class Solution: def divisorGame(self,...原创 2019-11-27 10:25:43 · 100 阅读 · 0 评论 -
1247. 交换字符使得字符串相同
题意:给定两个字符串 字符串之间可以单次交换一个字符但是字符串内部不能够交换最终使得上下两个字符串相同思路:判断总体x,y数量的奇偶,若为奇数则必不能满足,偶数则必须满足 若上下字符串两个为x-y x-y 则只需要交换一次变为x-x y-y,y-x y-x同类,但是xx yy由于同组不能交换 则需要交换两次。code:class Solution: def minimumSwap...原创 2019-11-27 10:10:27 · 723 阅读 · 0 评论 -
1. 两数之和
题意:数组中是否存在两个数 之和等于给定数思路:割草原理Code:class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: dct = {} for i, n in enumerate(nums): if target - n ...原创 2019-11-27 10:03:47 · 79 阅读 · 0 评论