
leetcode刷题
算法黑哥
喜欢算法,善于思考
展开
-
leetcode 160剑指offer面试题52. 两个链表的第一个公共节点(python3)
面试题52. 两个链表的第一个公共节点输入两个链表,找出它们的第一个公共节点。注意:如果两个链表没有交点,返回 null.在返回结果后,两个链表仍须保持原有的结构。可假定整个链表结构中没有循环。程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。本题与主站 160 题相同:https://leetcode-cn.com/problems/intersection-of-t...原创 2020-03-16 01:59:22 · 263 阅读 · 0 评论 -
剑指offer面试题68 - I. 二叉搜索树的最近公共祖先(python)
面试题68 - I. 二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5...原创 2020-03-16 00:26:28 · 279 阅读 · 0 评论 -
leetcode 113 剑指offer 面试题34. 二叉树中和为某一值的路径(python3)
面试题34. 二叉树中和为某一值的路径# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution:...原创 2020-03-15 21:53:31 · 229 阅读 · 0 评论 -
leetcode 112. 路径总和(python3)
112. 路径总和给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。参考课程 万门:树15.16# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.v...原创 2020-03-15 17:51:28 · 229 阅读 · 0 评论 -
leetcode 面试题32 - III. 从上到下打印二叉树 III(python3)
面试题32 - III. 从上到下打印二叉树 III请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。class Solution: def levelOrder(self, root: TreeNode) -> List[List[int]]: if not r...原创 2020-03-15 16:33:34 · 255 阅读 · 0 评论 -
leetcode 面试题32 (剑指offer)- II. 从上到下打印二叉树 II(python3)
面试题32 - II. 从上到下打印二叉树 II从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None#...原创 2020-03-15 16:24:08 · 348 阅读 · 0 评论 -
leetcode 面试题32(剑指offer) - I. 从上到下打印二叉树(python3)
面试题32 - I. 从上到下打印二叉树# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution:...原创 2020-03-15 13:30:47 · 379 阅读 · 0 评论 -
leetcode 222. 完全二叉树的节点个数(python3)
222. 完全二叉树的节点个数给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。# Definition for a binary tree node.# class TreeNode:# ...原创 2020-03-13 09:33:18 · 311 阅读 · 0 评论 -
leetcode 104. 二叉树的最大深度(python)
104. 二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# se...原创 2020-03-13 09:16:35 · 599 阅读 · 0 评论 -
leetcode 110. 平衡二叉树(python3)
110. 平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# ...原创 2020-03-13 02:00:20 · 219 阅读 · 0 评论 -
leetcode 122. 买卖股票的最佳时机 II(python3)
122. 买卖股票的最佳时机 II给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 ...原创 2020-03-12 16:28:30 · 302 阅读 · 0 评论 -
leetcode 121. 买卖股票的最佳时机(python3)
121. 买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-...原创 2020-03-12 16:20:18 · 230 阅读 · 0 评论 -
leetcode 746. 使用最小花费爬楼梯(python3)
746. 使用最小花费爬楼梯数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 costi。每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯。您需要找到达到楼层顶部的最低花费。在开始时,你可以选择从索引为 0 或 1 的元素作为初始阶梯。示例 1:输入: cost = [10, 15, 20]输出: 15解释: 最低花费是从c...原创 2020-03-12 12:30:25 · 325 阅读 · 0 评论 -
leetcode 82 82. 删除排序链表中的重复元素 II
82. 删除排序链表中的重复元素 II给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3class Solution: de...原创 2020-03-10 20:55:30 · 120 阅读 · 0 评论 -
leetcode 83. 删除排序链表中的重复元素(python3)
83. 删除排序链表中的重复元素给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3# Definition for singly-linked list.# class ListNode:# ...原创 2020-03-10 14:34:55 · 323 阅读 · 0 评论 -
leetcode 148. 排序链表
leetcode 148. 排序链表排序链表在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5# Definition f...原创 2020-03-10 08:25:03 · 259 阅读 · 0 评论 -
leetcode 19. 删除链表的倒数第N个节点(python3)
19. 删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路:快慢指针# Definition for ...原创 2020-03-09 14:57:28 · 342 阅读 · 0 评论 -
leetcode 3. 无重复字符的最长子串(python3)
3. 无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符...原创 2020-03-09 09:37:07 · 237 阅读 · 0 评论 -
leetcode 92. 反转链表 II(python3)
[原题链接]92. 反转链表 II反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL思路参考:万门视频# Definition for singly-...原创 2020-03-08 16:34:44 · 197 阅读 · 1 评论 -
leetcode 142. 环形链表 II (python3)
142. 环形链表 II给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。相遇之后,fast 和slow都用一倍速跑,相遇的地方便是起点# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# ...原创 2020-03-08 12:23:23 · 366 阅读 · 1 评论 -
leetcode 141. 环形链表(python)
141. 环形链表给定一个链表,判断链表中是否有环。快慢指针法:忘记了 参考万门视频。# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: ...原创 2020-03-08 10:45:42 · 218 阅读 · 0 评论 -
leetcode 面试题51. 数组中的逆序对(python3)
面试题51. 数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000方法1:时间复杂度O(n^2)此方法 超出了 时间 限制面试时 可以先用这个,然后再用更好的方法。class Solution:...原创 2020-03-07 00:29:55 · 466 阅读 · 0 评论 -
leetcode 151. 翻转字符串里的单词(python)
151. 翻转字符串里的单词给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: “the sky is blue”输出: “blue is sky the”示例 2:输入: " hello world! "输出: “world! hello”解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: “a good exam...原创 2020-03-05 14:33:36 · 390 阅读 · 0 评论 -
leetcode 215. 数组中的第K个最大元素(python)
数组中的第K个最大元素在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。思路:快排 ...原创 2020-03-05 11:37:20 · 407 阅读 · 0 评论 -
leetcode 53. 最大子序和(python3)
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。方法1:局部最优 全局最优class Solution: def...原创 2020-03-05 00:47:10 · 197 阅读 · 0 评论 -
leetcode 349. 两个数组的交集(python3)
349. 两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。通过次数53,567提交次数78,3...原创 2020-03-04 19:57:14 · 242 阅读 · 0 评论 -
leetcode 350. 两个数组的交集 II(python3)
350. 两个数组的交集 II给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺...原创 2020-03-04 19:44:24 · 201 阅读 · 0 评论 -
leetcode 859. 亲密字符串(python3)
859. 亲密字符串给定两个由小写字母构成的字符串 A 和 B ,只要我们可以通过交换 A 中的两个字母得到与 B 相等的结果,就返回 true ;否则返回 false 。示例 1:输入: A = “ab”, B = “ba”输出: true示例 2:输入: A = “ab”, B = “ab”输出: false示例 3:输入: A = “aa”, B = “aa”输出: tr...原创 2020-03-04 01:06:51 · 266 阅读 · 0 评论 -
leetcode 125 验证回文串 (python3实现)
125. 验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false方法1:需要借助额外空间class Solution(object): ...原创 2020-03-02 21:51:31 · 235 阅读 · 0 评论 -
leetcode 162. 寻找峰值(python3实现)
【原题链接】峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。使用二分查找:1、对比每次中点元素和其右侧元素值的大小:(1)若中点元素值大于右侧元素值,则说明该中点元素位于...原创 2020-02-11 16:39:07 · 441 阅读 · 0 评论 -
leetcode231 2的幂(python3实现)
【原题链接】方法1 O(n)class Solution(object): def isPowerOfTwo(self, n): if n == 0: return False while n % 2 == 0: n /= 2 return n == 1方法2 位操作 O(1)...原创 2020-02-11 02:03:42 · 201 阅读 · 0 评论 -
leetcode 409. 最长回文串 python3实现
【原题链接】给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入: “abccccdd”输出: 7解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。解题思路:class Solution: ...原创 2020-02-09 23:25:19 · 340 阅读 · 0 评论 -
leetcode 9. 回文数(python3实现)
【原题链接】判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121 输出: true示例 2:输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。...原创 2020-01-14 23:48:37 · 1197 阅读 · 0 评论 -
leetcode7. 整数反转 (python3实现)
思路1:先转化为字符串 再取整数class Solution: def reverse(self, x: int) -> int: if x >= 0: y = int(str(x)[::-1]) #末尾是0 ,反转以后取整数 int会自动把0取消 else: y = -int(str(-x)[:...原创 2020-01-14 14:50:28 · 293 阅读 · 0 评论 -
leetcode 136. 只出现一次的数字(Python3)
【原题连接】给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4方法 1:数学方法2:位操作class Solution: def singleNumb...原创 2020-01-03 09:33:34 · 172 阅读 · 1 评论 -
leetcode 229.求众数Ⅱ
原题链接给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。示例 1:输入: [3,2,3]输出: [3]示例 2:输入: [1,1,1,3,3,2,2,2]输出: [1,2]class Solution: def majorityElement(self, nums: List[i...原创 2020-01-02 15:17:41 · 469 阅读 · 0 评论 -
leetcode 169. 多数元素(python3实现)
【原题链接】给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2思路1:先排序 再取中间值#O(nlogn)class Solution(object): de...原创 2020-01-02 13:57:47 · 1010 阅读 · 1 评论 -
leetcode 75. 颜色分类(python3实现)
【原题链接】给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]思路1:计数排序时间复杂度O(n^2)思路二:指针 ...原创 2020-01-02 11:41:51 · 385 阅读 · 0 评论 -
leetcode 191. 位1的个数 (python3)
【原题链接】编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:000000000000000000000000100...原创 2019-12-30 20:53:07 · 199 阅读 · 0 评论 -
leetcode 33、81 . 搜索旋转排序数组 (Python3)
原题连接假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例 2:输入: nums = [...原创 2019-12-28 22:06:56 · 181 阅读 · 0 评论