
LeetCode
Chungchinkei
这个作者很懒,什么都没留下…
展开
-
剑指Offer 26.树的子结构 | LeetCode 572.另一个树的子树(Python)
题目介绍1.另一个树的子树给定两个非空二叉树s和t,检验s中是否包含和t具有相同结构和节点值的字数。s的一个子树包括s的一个节点和这个节点的所有子孙。s也可以看做它自身的一颗子树。实例1:给定的树s: 3 / \ 4 5 / \ 1 2 给定的树t: 4 / \ 1 2返回true,因为t与s的一...原创 2019-04-29 18:15:30 · 601 阅读 · 0 评论 -
剑指Offer 28 | LeetCode 对称二叉树(Python)
题目描述给定一个二叉树,检查它是否是镜像对称的。题目解法思路是判断左子树与右子树的翻转是不是同一棵树。基于LeetCode 100.相同的树,巧妙地进行判断。class Solution(object): def isSameTree(self, p, q): if not p and not q: return True if p and q ...原创 2019-07-18 09:54:47 · 114 阅读 · 0 评论 -
剑指Offer 18 | LeetCode 237.删除链表的节点(Python)
题目描述删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。示例:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.题目解析看到题目一开始还很迷惑,为什么没有给头节点,只给了被删除的节点。如果给了头节点的情况下,顺序...原创 2019-07-16 14:07:47 · 316 阅读 · 0 评论 -
剑指Offer10 | LeetCode 509 斐波那契数列系列(Python)
剑指Offer 10 | LeetCode 509 斐波那契数列斐波那契数列,经典中的经典,这里不做太多介绍了。递归常年作为循环的反面教材,时间复杂度以n的指数递增。def fib(n): if n <= 0: return 0 if n == 1: return 1 return fib(n-1) + fib(n-2)循环时间复杂度O(n)。cl...原创 2019-07-12 16:08:27 · 381 阅读 · 0 评论 -
剑指Offer 35.复杂链表的复制 | LeetCode 138.复制带随机指针的链表(Python)
题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路三步法剑指Offer上的解法,具体步骤分为三步:1.复制原始链表的任意节点N并创建新节点N‘,并将N’链接到N的后面;2.第一步复制出来的节点没有rand...原创 2019-07-23 11:13:14 · 269 阅读 · 0 评论 -
剑指Offer 44.数字序列中某一位的数字 | LeetCode 400.第N个数字(Python)
剑指Offer 44.数字序列中某一位的数字数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。LeetCode 400.第N个数字在无限的整数序列1,2,3,4,5,6,7,8,9,10,11,…中找到第n个数字。解题思路举一个具体的例子来...原创 2019-07-24 14:51:33 · 460 阅读 · 0 评论 -
剑指Offer 24 | LeetCode 206 反转链表(Python)
题目描述输入一个链表,反转链表后,输出新链表的表头。题目解法递归参考我之前在知乎发的图解文章:https://zhuanlan.zhihu.com/p/60117407主要思路是递归到最后的节点,然后进行操作。class Solution: # 返回ListNode def ReverseList(self, pHead): # write code ...原创 2019-07-17 16:02:54 · 200 阅读 · 0 评论 -
剑指Offer 25 | LeetCode 21 合并两个排序的链表(Python)
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。题目解法递归思路主要是比较两个节点的大小。举具体例子进行说明:链表1: 1,3,5,7链表2: 2,4,6,8第一步比较节点1和节点2的大小关系,可以确定合并后的链表第一个节点为1;第二步比较节点1的原下一个节点3和节点2的大小关系,确定新链表的第二个节点为2;...如此类推...原创 2019-07-17 16:24:52 · 148 阅读 · 0 评论 -
剑指Offer 38 | LeetCode 46/47 全排列系列(Python)
目录LeetCode 46.全排列剑指Offer 38.字符串的全排列LeetCode 46.全排列给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]解题思路求全排列,可以看成两步:第一步求可能出...原创 2019-07-24 16:36:14 · 196 阅读 · 0 评论 -
剑指Offer 49 | LeetCode 263/264 丑数系列(Python)
LeetCode 263.丑数编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数 2, 3, 5 的正整数。解题思路丑数定义为只包含质因数2,3,5的正整数,因此:如果一个数能被2整除,就连续除以2;能被3整除,就连续除以3;能被5整除,就连续除以5;最后如果得到1,则这个数是丑数。class Solution: def isUgly(self, num: int...原创 2019-07-25 16:13:03 · 221 阅读 · 0 评论 -
剑指Offer 34.二叉树中和为某一值的路径 | LeetCode 112.路径总和(Python)
LeetCode 112.路径总和给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。解题思路LeetCode这题相对简单,只需要判断是否存在,注意路径定义为从根节点到叶节点即可。递归class Solution: def hasPathSum(self, root: TreeNode, sum: int) -> b...原创 2019-07-22 15:13:51 · 342 阅读 · 0 评论 -
LeetCode 100.相同的树(Python)
题目描述给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。题目解法题目本身不难,但其实能在很多二叉树的题里作为小函数调用,因此特意写一写。递归class Solution(object): def isSameTree(self, p, q): """ :type p: TreeN...原创 2019-07-18 09:44:50 · 185 阅读 · 0 评论 -
剑指Offer 27.二叉树的镜像 | LeetCode 226.翻转二叉树(Python)
题目描述请完成一个函数,输入一颗二叉树,该函数输出它的镜像。翻转二叉树后便得到二叉树的镜像。递归class Solution(object): def invertTree(self, root): """ :type root: TreeNode :rtype: TreeNode """ if no...原创 2019-07-18 09:17:57 · 239 阅读 · 0 评论 -
LeetCode 88.合并两个有序数组(Python)
题目介绍给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m=3nums2 ...原创 2019-07-11 10:44:39 · 272 阅读 · 0 评论 -
剑指Offer 43.1~n整数中1出现的次数 | LeetCode 233.数字1的个数 (Python)
题目介绍给定一个整数n,计算所有小于等于n的非负整数中数字1出现的个数。输入: 13输出: 3解释: 数字1出现在以下数字中:1,10,11,12,13原创 2019-04-26 21:28:00 · 1043 阅读 · 0 评论 -
剑指Offer 45.把数组排成最小数 | LeetCode 179.最大数(Python2 / 3)
题目介绍题目来自剑指Offer,要求输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印出能拼接出的所有数字中最小的一个。例如:输入数组{3, 32, 321}输出最小数字321323...原创 2019-04-26 20:09:19 · 1357 阅读 · 2 评论 -
剑指Offer 56| LeetCode 136.只出现一次的数字(Python)
题目介绍给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:算法应该具有线性时间复杂度。 要求不使用额外空间来实现。输入:[2,2,1]输出:1输入:[4,1,2,1,2]输出:4字典法以元素值为key,元素出现的频次为value,构建字典,最后返回value == 1的key即可。这个方法最大的缺点在于占用了O(n)...原创 2019-04-08 18:05:35 · 207 阅读 · 0 评论 -
剑指Offer 32 | LeetCode 102/103/107 二叉树的层次遍历系列(Python)
题目介绍LeetCode 102题目给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [3], [9,20], [15,7]]而在LeetCode 107中则要...原创 2019-04-06 21:40:46 · 249 阅读 · 0 评论 -
LeetCode 450.删除二叉搜索树中的节点(Python实现)
题目要求题目给定一个二叉搜索树的根节点 root 和一个值 key。要求删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。其次要求算法时间复杂度为 O(h),h 为树的高度。解题思路如何找到需要删除的节点?根据题目要求,我们肯定是要从上到下进行搜索的。其次,我们也要充分利用BST...原创 2019-04-04 20:29:46 · 963 阅读 · 0 评论 -
LeetCode 114.二叉树展开为链表(Python实现)
二叉树展开为链表题目给定一个二叉树,要求原地将它展开为链表。例如,给定二叉树将其展开为:题目解读在Python中,树的实现一般为:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left =...原创 2019-04-03 20:47:57 · 1108 阅读 · 0 评论 -
剑指Offer 7 | LeetCode 105/106/889/1008 根据遍历顺序重建二叉树系列(Python)
二叉树的遍历二叉树的遍历方式有很多种,本文主要讨论三种比较常见的方式:前序遍历、中序遍历及后序遍历。这三种遍历的区别在于:前序遍历:先访问根节点,再是左子树,最后是右子树;中序遍历:先访问左子树,再是根节点,最后是右子树;后序遍历:先访问左子树,再是右子树,最后是根节点。下面举一个例子来进行介绍(图片来源于网络):前序遍历为:[1, 2, 4, 8, 5, 3, 6, 9, 10,...原创 2019-04-02 21:00:32 · 302 阅读 · 0 评论 -
LeetCode 235/236 LCA问题(Python)
LCA问题给定一个二叉树,找到树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大 (一个节点也可以是它自己的祖先)。”...原创 2019-04-01 18:49:37 · 720 阅读 · 0 评论 -
剑指Offer 52.两个链表的第一个公共节点 | LeetCode 160.相交链表(Python)
LeetCode 160.相交链表(Python实现)题目要求很简单,找到两个单链表相交的起始节点。如下面图所示:链表A、链表B在节点c1处相交,节点c1即为题目所求。注意:如果两个链表没有交点,返回null;在返回结构后,两个链表仍须保持原有的结构;可假定整个链表结构中没有循环;程序尽量满足O(n)时间复杂度,且仅用O(1)内存.题目解读:要注意程序的鲁棒性,特别是在...原创 2019-03-31 20:48:01 · 446 阅读 · 0 评论 -
剑指Offer 3 | Leetcode 442 数组中重复的数字系列(Python)
1.找出数组中重复的数字在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。示例输出长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或3题目解读提取题目中的关键信息:长度为n的数组,数字范围在0到n-1内,也就是数字的取值范围不会大于ind...原创 2019-07-10 16:23:27 · 303 阅读 · 0 评论 -
剑指Offer 63.股票的最大利润 | LeetCode 121/122/123 买卖股票的最佳时机(Python)
目录剑指Offer 63.股票的最大利润LeetCode 121.买卖股票的最佳时机ILeetCode 122.买卖股票的最佳时机IILeetCode 123.买卖股票的最佳时机III剑指Offer 63.股票的最大利润 | LeetCode 121.买卖股票的最佳时机I假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖一次该股票可能获得的利润是多少?样例:输入:[9, ...原创 2019-08-01 15:57:37 · 182 阅读 · 0 评论