![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
加油!小小七
这个作者很懒,什么都没留下…
展开
-
501. 二叉搜索树中的众数(简单、树)
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。 # Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.ri...原创 2018-12-11 20:14:32 · 162 阅读 · 0 评论 -
590. N叉树的后序遍历(简单)
"""# Definition for a Node.class Node(object): def __init__(self, val, children): self.val = val self.children = children"""class Solution(object): def postorder(self, roo...原创 2018-12-16 15:29:42 · 341 阅读 · 0 评论 -
589. N叉树的前序遍历(简单)
"""# Definition for a Node.class Node(object): def __init__(self, val, children): self.val = val self.children = children"""class Solution(object): def preorder(self, ro...原创 2018-12-16 15:22:44 · 179 阅读 · 0 评论 -
551.学生出勤记录 I(简单)
给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场如果一个学生的出勤记录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。class Solution: def checkRecord(self, s): """ ...原创 2018-12-16 15:19:49 · 964 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5] _______6______ / \ ___2__ ___8__ / \ / \ 0 _4...原创 2018-12-09 21:01:32 · 338 阅读 · 0 评论 -
230. 二叉搜索树中第K小的元素(中等,树)
给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 1思路:首先注意搜索二叉树的特点,左子树、根结点、右子树一次增大,所以和中序遍历...原创 2018-12-09 20:35:02 · 145 阅读 · 0 评论 -
222. 完全二叉树的节点个数(中等、树)
给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入: 1 / \ 2 3 / \ /4 5 6输出: 6# Definition fo...原创 2018-12-09 20:12:40 · 202 阅读 · 0 评论 -
102..103.199二叉树的(锯齿形)层次遍历、右视图(中等,树)
102、给定一个二叉树,返回其按层次遍历的节点值(即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]# Definition for a binary tree ...原创 2018-12-09 19:50:41 · 145 阅读 · 0 评论 -
144,145 二叉树的前序,后序遍历(中等,困难)
给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x...原创 2018-12-09 19:12:32 · 89 阅读 · 0 评论 -
594. 最长和谐子序列(简单)
和谐数组是指一个数组里元素的最大值和最小值之间的差别正好是1。现在,给定一个整数数组,你需要在所有可能的子序列中找到最长的和谐子序列的长度。#超出时间了class Solution(object): def findLHS(self, nums): """ :type nums: List[int] :rtype: int ...原创 2018-12-16 16:03:17 · 244 阅读 · 1 评论 -
447. 回旋镖的数量(简单)
给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。找到所有回旋镖的数量。你可以假设 n 最大为 500,所有点的坐标在闭区间[-10000, 10000] 中。示例:输入:[[0,0],[1,0],[2,0]]输出:2解释:两个回旋镖为 [[1,0],[0,0...原创 2018-12-16 16:30:03 · 341 阅读 · 0 评论 -
80. 删除排序数组中的重复项 II(中等)(1.5)
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长...原创 2019-01-05 20:45:53 · 94 阅读 · 0 评论 -
75. 颜色分类(中等)(1.5)
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。...原创 2019-01-05 20:12:48 · 186 阅读 · 0 评论 -
92. 反转链表 II(中等)(1.5)
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL思考:经过一趟扫描,把整个链的元素放到列表中进行翻转,然后组建成新的链表class So...原创 2019-01-05 19:48:16 · 129 阅读 · 0 评论 -
61. 旋转链表(中等)(1.5)
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4-原创 2019-01-05 12:13:02 · 107 阅读 · 0 评论 -
77. 组合(中等)(1.5)(递归)
给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入: n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]class Solution: def com(self,result,res,n,k,w): if len(res)...原创 2019-01-05 11:35:25 · 169 阅读 · 0 评论 -
29. 两数相除(中等)(1.5)
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3class Solution(object): def divide(self, dividend, di...原创 2019-01-05 10:48:28 · 150 阅读 · 0 评论 -
22. 括号生成(中等)(1.5)
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]class Solution: def generateParenthesis(self, n): "&quo原创 2019-01-05 10:31:34 · 148 阅读 · 0 评论 -
450. 删除二叉搜索树中的节点(中等、二叉搜索树)
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点; 如果找到了,删除它。示例:root = [5,3,6,2,4,null,7]key = 3 5 / \ 3 6 / \ ...原创 2018-12-11 19:49:19 · 196 阅读 · 0 评论 -
151. 翻转字符串里的单词(中等,字符串)
给定一个字符串,逐个翻转字符串中的每个单词。示例: 输入: "the sky is blue",输出: "blue is sky the".说明:无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。class Solution(object): def...原创 2018-12-09 18:40:28 · 79 阅读 · 0 评论 -
136.137. 只出现一次的数字 I. II(简单,中等,数组)
136.给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1方法一:class Solution: def singleNumber(self, nums): """ :type nums: List[int] :rtype:...原创 2018-12-09 09:41:16 · 161 阅读 · 0 评论 -
129. 求根到叶子节点数字之和(中等,树)
给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。计算从根到叶子节点生成的所有数字之和。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25思路:先求出每条路径上的数字组成的字符串列表,然后把这些int数值相加成和。# Definition for a binary tree node.# c...原创 2018-12-09 09:14:26 · 109 阅读 · 0 评论 -
109. 有序链表转换二叉搜索树(中等,链表,二叉树)
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \ ...原创 2018-12-08 10:00:31 · 96 阅读 · 0 评论 -
106. 从中序与后序遍历序列构造二叉树(中等,二叉树)
根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7# Definition for a binary tree no...原创 2018-12-08 09:11:55 · 82 阅读 · 0 评论 -
105. 从前序与中序遍历序列构造二叉树(中等,二叉树)
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7 思路:首先根据前序遍历找到根,然后根据中序遍历中根所在的位置确定左子...原创 2018-12-08 08:54:08 · 153 阅读 · 0 评论 -
2. 两数相加(中等,链表)
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...原创 2018-12-05 10:09:20 · 149 阅读 · 0 评论 -
3. 无重复字符的最长子串(中等,字符串)
给定一个字符串,找出不含有重复字符的最长子串的长度。示例:“abcabcbb” ,没有重复字符的最长子串是 “abc” ,那么长度就是3。“bbbbb” ,最长的子串就是 “b” ,长度是1。“pwwkew” ,最长子串是 “wke” ,长度是3。请注意答案必须是一个子串,”pwke” 是 子序列 而不是子串。class Solution: def lengthOfLongest...原创 2018-12-05 10:05:31 · 132 阅读 · 0 评论 -
496. 下一个更大元素 I(简单、数组)
给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出-1。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输...原创 2018-12-04 13:17:59 · 243 阅读 · 0 评论 -
12和13 罗马数字的相互转换(简单、中等)
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000给定一个罗马数字,将其转换成整数。输入确保在 1 到 3...原创 2018-12-04 13:13:06 · 1009 阅读 · 0 评论 -
500.键盘行(简单、字符串)
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。输入: [“Hello”, “Alaska”, “Dad”, “Peace”]输出: [“Alaska”, “Dad”]def findWords(self, words): """ :type words: List[str] :rtype: List[str] ...原创 2018-12-04 13:07:43 · 155 阅读 · 0 评论 -
39. 组合总和(中等,数组,递归)
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[[7],...原创 2018-12-04 12:18:26 · 168 阅读 · 1 评论 -
108. 将有序数组转换为二叉搜索树(简单,数组,二叉树)
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -1...原创 2018-12-08 10:05:31 · 301 阅读 · 0 评论 -
112.113. 路径总和 I,II(简单,中等)
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \...原创 2018-12-08 21:40:11 · 192 阅读 · 0 评论 -
443. 压缩字符串(简单、字符串)
给定一组字符,使用原地算法将其压缩。压缩后的长度必须始终小于或等于原数组长度。数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。在完成原地修改输入数组后,返回数组的新长度。示例 1:输入:[“a”,“a”,“b”,“b”,“c”,“c”,“c”]输出:返回6,输入数组的前6个字符应该是:[“a”,“2”,“b”,“2”,“c”,“3”]说明:"aa"被"a2"替代。"b...原创 2018-12-06 09:03:13 · 768 阅读 · 0 评论 -
153.154.162
153. 寻找旋转排序数组中的最小值 (中等)假设按照升序排序的数组在预先未知的某个点上进行了旋转( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1class Solution: def findMin(se...原创 2018-12-13 17:32:57 · 95 阅读 · 0 评论 -
114. 二叉树展开为链表(中等,链表)
给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6思路:先找一个第三方变量保存右子树,将左子树连接到右子树的位置,左子树=None...原创 2018-12-09 08:56:04 · 163 阅读 · 0 评论 -
19. 删除链表的倒数第N个节点(中等、链表)
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。思路:给定两个指针,首先一个先走n步,然后两个再一起走,直到最早的那个到达终点。其中,有两种情况,一个是删除第一个原创 2018-12-04 09:55:58 · 98 阅读 · 2 评论 -
24. 两两交换链表中的节点(中等、链表)
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:-你的算法只能使用常数的额外空间。-你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。class ListNode(object): def __in原创 2018-12-04 09:30:25 · 188 阅读 · 1 评论 -
559. N叉树的最大深度(简单、树)
给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。方法一:简单的,就是自身递归,前提要明白children是子树节点的集合,应该遍历输出计算"""# Definition for a Node.class Node(object): def __init__(self, val, children): self.va...原创 2018-12-06 09:52:34 · 348 阅读 · 0 评论 -
657. 机器人能否返回原点(简单)
在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向...原创 2018-12-06 09:34:01 · 1190 阅读 · 0 评论