![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据研发笔试Leetcode刷题笔记
刷题总结
Lynn Wen
这个作者很懒,什么都没留下…
展开
-
数据研发笔试Leetcode刷题笔记32:从上到下打印二叉树③
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。2 解题思路面试题32 - I. 从上到下打印二叉树 主要考察 树的按层打印 ;面试题32 - II. 从上到下打印二叉树 II 额外要求 每一层打印到一行 ;本题额外要求 打印顺序交替变化(建议按顺序做此三道题)1。利用双原创 2020-05-09 09:57:40 · 162 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记31:从上到下打印二叉树②
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。2 解题思路建议先做 刷题笔记30 从上到下打印二叉树 再做此题,两题仅有微小区别,即本题需将 每一层打印到一行 。按层打印: 题目要求的二叉树的 从上至下 打印(即按层打印),又称为二叉树的 广...原创 2020-05-08 09:42:04 · 213 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记30:从上到下打印二叉树
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。2 解题思路题目要求的二叉树的 从上至下 打印(即按层打印),又称为二叉树的 广度优先搜索(BFS)。BFS 通常借助 队列 的先入先出特性来实现1。算法流程:特例处理: 当树的根节点为空,则...原创 2020-05-08 09:18:16 · 136 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记29:栈的压入、弹出序列
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序...原创 2020-05-08 09:06:11 · 215 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记28:包含min函数的栈
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。2 解题思路3 代码实现(Python3)class MinStack: def __init__(self...原创 2020-05-07 09:06:01 · 107 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记26:对称的二叉树
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。2 解题思路对称二叉树定义: 对于树中 任意两个对称节点 L 和 R ,一定有:L.val=R.val :即此两对称节点值相等。L.left.val=R.right.v...原创 2020-05-06 09:47:24 · 206 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记25:二叉树的镜像
文章目录1 题目描述2 解题思路2.1 递归法2.2 辅助栈(或队列)3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)请完成一个函数,输入一个二叉树,该函数输出它的镜像。2 解题思路二叉树镜像定义: 对于二叉树中任意节点 root ,设其左 / 右子节点分别为 left, right;则在二叉树的镜像中的对应 root 节点,其左 / 右子节点...原创 2020-05-06 09:23:05 · 188 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记24:树的子结构
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。2 解题思路若树 B 是树 A 的子结构,则子结构的根节点可能为树 A 的任意一个节点。因此,判断树 B 是否是树 A 的子结构,...原创 2020-05-06 08:56:44 · 150 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记23:合并两个排序的链表
文章目录1 题目描述2 解题思路[^1]3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。2 解题思路13 代码实现(Python3)class Solution: def mergeTwoLists(self, l1: ListNode, l2: ListNod...原创 2020-05-05 08:48:43 · 135 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记22:反转链表
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。2 解题思路定义两个指针:第一个指针叫 pre,最初是指向 null 的。第二个指针 cur 指向 head,然后不断遍历 cur。每次迭代到 cur,都将 cur 的 next 指...原创 2020-05-05 08:31:59 · 151 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记21:链表中倒数第K个节点
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。2 解题思路先遍历统计链表长度,记为...原创 2020-05-04 09:10:30 · 195 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记20:调整数组顺序使奇数位于偶数前面
文章目录1 题目描述2 解题思路2.1 双指针2.2 借助空列表3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。2 解题思路2.1 双指针考虑定义双指针 i , j 分列数组左右两端,循环执行:指针 i 从左向右寻找偶数;指针...原创 2020-05-04 08:47:22 · 142 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记19:表述数值的字符串
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。2 解题思路快速幂法(二进制角度)1快速幂法(二分法角度)3 代码实现(Python3)...原创 2020-05-04 08:14:58 · 111 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记18:正则表达式匹配
文章目录1 题目描述2 代码实现(Python3)1 题目描述来源:力扣(LeetCode)请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。2 代码实...原创 2020-05-03 09:24:34 · 131 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记17:删除链表的节点
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。2 解题思路删除值为 val 的节点可分为两步:定位节点、修改引用1。定位节点: 遍历链表,直到 head.val = val 时跳出,即可定位目标节点。修改引用: ...原创 2020-05-03 08:50:57 · 161 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记16:打印从1到最大的n位数
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。2 解题思路计算出需打印n位数的最大值依次循环添加到空列表中,并打印出来3 代码实现(Python3)class Solution:...原创 2020-05-02 09:06:22 · 135 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记15:数值的整数次方
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。2 解题思路快速幂法(二进制角度)1快速幂法(二分法角度)3 代码实现(Python3)...原创 2020-05-02 08:02:47 · 124 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记14:二进制中1的个数
文章目录1 题目描述2 解题思路2.1 逐位判断2.2 巧用 n&(n−1)3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。2 解题思路2.1 逐位判断根据 与运算 定义,设二进制...原创 2020-05-01 10:49:40 · 182 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记13:剪绳子②
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3...原创 2020-04-22 10:46:39 · 202 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记12:剪绳子
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]×k[1]×…×k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3...原创 2020-04-22 10:19:01 · 188 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记11:机器人的运动范围
文章目录1 题目描述2 解题思路3.1 深度优先遍历 DFS3.2 广度优先遍历 BFS3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k...原创 2020-04-21 09:45:37 · 281 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记10:矩阵中的路径
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(...原创 2020-04-21 08:53:58 · 166 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记09:旋转数组的最小数字
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。2 解题思路如下图所示,寻找旋转数组的最小元素即为...原创 2020-04-21 08:28:58 · 144 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记08:青蛙跳台阶问题
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。2 解题思路此类求 多少种可能性 的题目一般都有 递推性质 ,即 f...原创 2020-04-21 08:11:55 · 232 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记07:斐波那契数列
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数...原创 2020-04-18 10:35:32 · 520 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记06:用两个栈实现队列
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)**用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )**2 解题思路(1)解题思路:栈无...原创 2020-04-18 09:51:04 · 164 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记05:重建二叉树
文章目录1 题目描述2 解题思路3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。2 解题思路题目分析:前序遍历特点: 节点按照 [ 根节点 | 左子树 | 右子树 ] 排序,以题目示例为例:[ 3 | 9 | 20 15 7 ]中序遍...原创 2020-04-18 09:11:32 · 149 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记04:从尾到头打印链表
文章目录1 题目描述2 解题思路2.1 直接遍历二维数组3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。2 解题思路2.1 直接遍历二维数组3 代码实现(Python3) 4 复杂度分析法1:直接遍历二维数组时间复杂度:O(NM)。二维数组中的每个元素都被遍...原创 2020-04-18 08:36:01 · 135 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记03:替换空格
文章目录1 题目描述2 解题思路2.1 借助空字符串2.2 借助空list3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)请实现一个函数,把字符串 s 中的每个空格替换成"%20"。2 解题思路2.1 借助空字符串初始化一个空的字符串 res 并遍历输入字符串的每个字符 i:如果 i 不是空格,直接加到 res 上;如果是空格,则将结果加 ...原创 2020-04-18 07:49:53 · 129 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记02:二维数组中的查找
文章目录1 题目描述2 解题思路2.1 直接遍历二维数组2.2 巧妙利用标志数性质2.3 递归3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。2 解题思路2.1 直接遍...原创 2020-04-17 11:13:35 · 370 阅读 · 0 评论 -
数据研发笔试Leetcode刷题笔记01:找出数组中重复的数字
文章目录1 题目描述2 解题思路2.1 排序后查找2.2 利用哈希表查找2.3 巧用数组性质3 代码实现(Python3)4 复杂度分析1 题目描述来源:力扣(LeetCode)在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。2 解题思路2.1 排序...原创 2020-04-17 09:43:45 · 389 阅读 · 0 评论