leetcode
文章平均质量分 83
摸索学习ing...
哞哞哞是Echo
这个作者很懒,什么都没留下…
展开
-
python实现二叉树遍历(递归与非递归)
python实现二叉树遍历(递归与非递归)递归非递归递归 # class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None## # @param root TreeNode类 the root of binary tree# @return int整型二维数组#class Solution:原创 2021-06-20 14:19:09 · 322 阅读 · 0 评论 -
python实现排序(冒泡,选择,插入,希尔,快排,归并,堆排)
python实现排序(冒泡,选择,插入,希尔,快排,归并,堆排)写在前面算法解析实现冒泡排序1.快速理解/复杂度2.代码选择排序1.快速理解与复杂度2.代码插入排序1.快速理解/复杂度2. 代码希尔排序1.快速理解与复杂度2.代码快速排序(!!!)1.快速理解/复杂度2.代码归并排序(!!)1.理解/复杂度2.代码堆排序(!)写在前面还是从最基本的开始,实际上4月各种实习面试里最容易问的大概是快排,归并,堆排也有概率问到。周末摸鱼回顾一下!(误)算法解析实现冒泡排序1.快速理解/复杂度时:时间原创 2021-06-19 23:52:16 · 848 阅读 · 10 评论 -
python实现Leetcode树相关题(重建二叉,子结构,镜像,对称,层次遍历,深度,和/路径,第k大节点,最近公共祖先)
python实现Leetcode树相关题目1.重建二叉树2.树的子结构3.二叉树的镜像4.对称的二叉树5.层次遍历5-1.输出层次遍历结果5-2.每层单独输出5-3.之字形输出1.重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:递归1.直接递归左右子树的时候切分前序和中序。pos是获取在中序遍历里原创 2021-03-10 12:07:42 · 411 阅读 · 0 评论 -
python实现Leetcode链表题型全解(反转,合并,删除,环,公共节点,复制,相加,重复,回文,重排)更新ing
python实现Leetcode链表题型全解(反转,合并,删除,环,公共节点,复制,相加,重复,回文)1.反转链表2.合并2个有序链表3. 删除链表节点4-1.删除链表的倒数第n个节点4-2. 输出该链表中倒数第k个结点5-1.链表是否有环5-2.若链表有环找入环点6.两个链表的第一个公共结点7.复制复杂链表(含random)8.两个链表相加链表元素正序链表元素倒序9.删除链表的重复元素未排序链表排序链表排序链表,且不把重复元素保留一次,全部删除10. 判断链表是否回文1.反转链表输入一个链表,反转链表原创 2021-03-01 16:53:31 · 234 阅读 · 2 评论 -
[S]O-68-最近公共祖先问题
[S]O-68-python:最近公共祖先问题0-祖先&最近公共祖先意义祖先最近公共祖先1.二叉搜索树中两个节点的最近公共祖先题目分析python代码2.二叉树中两个节点的最近公共祖先题目分析python代码0-祖先&最近公共祖先意义参考:大神的link祖先若节点 p 在节点 root的左(右)子树中,或 p=root,则称 root 是 p 的祖先最近公共祖先最近公共祖先的定义: 设节点root 为节点 p,q的某公共祖先,若其左子节点 root.left 和右子节点roo原创 2021-02-09 10:16:50 · 187 阅读 · 0 评论 -
[M]O-32从上到下打印二叉树(python)
1.题目从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]题目要求的二叉树的 从上至下 打印(即按层打印),又称为二叉树的 广度优先搜索(BFS)。BFS 通常借助 队列 的先入先出特性来实现特例处理: 当树的根节点为空,则直接返回空列表 [] ;初始化: 打印结果列表 res = [原创 2021-01-17 22:29:04 · 204 阅读 · 0 评论 -
O-07/26/27/28 二叉树重建/子结构/镜像/对称(Python)
O-07 重建二叉树题目输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。给出:前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回: 3 / \ 9 20 / \ 15 7分析与代码前序遍历性质: 节点按照 [ 根节点 | 左子树 | 右子树 ] 排序。中序遍历性质: 节点按照 [ 左子树 | 根节点 | 右子树 ] 排序。原创 2021-01-15 22:38:58 · 227 阅读 · 0 评论 -
[S]O-30/31包含min函数的栈/栈的压入弹出序列
[S]O-30/31包含min函数的栈/栈的压入弹出序列1.1O-30包含min函数的栈定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.po原创 2021-01-11 22:27:36 · 171 阅读 · 0 评论 -
[S]O-22/23/24 链表倒数第k个节点、反转链表、合并排序列表(Python)
[S]O-22/23/24 链表倒数第k个节点、反转链表、合并排序列表(Python)1. O-22链表倒数第k个节点-题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.1.分析与代码普通思原创 2021-01-10 16:36:31 · 154 阅读 · 0 评论 -
[S]O-18 删除链表的节点(Python)
题目给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。分析:双指针删除值为 val 的节点可分为两步:定位节点、修改引用。定位节点: 遍历链表,直到 head.val == val 时跳出,即可定位目标节点。修改引用: 设节点 cur 的前驱节点为 pre ,后继节点为 cur.next ;则执行 pre.next = cur.next ,即可实现删除 cur 节点。参考:link流程:特例处理: 当应删除头节点 head 时head.val原创 2021-01-08 14:56:28 · 208 阅读 · 0 评论 -
[H]O-19 正则表达式匹配(Python)
[H]O-19 正则表达式匹配题目请实现一个函数用来匹配包含’. ‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但与"aa.a"和"ab*a"均不匹配。s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母以及字符 . 和 *,无连续的 *。输入:s = "ab"p = ".*"输出: tr原创 2021-01-08 14:42:58 · 249 阅读 · 0 评论 -
[s]O-21 调整数组顺序使奇数在偶数之前(python实现与升级版腾讯面试题)
[s]O-21 调整数组顺序使奇数在偶数之前(python实现与升级版腾讯面试题)题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。方法解决/代码Method1 双指针参考:link考虑定义双指针 i, j分列数组左右两端,循环执行:指针 i从左向右寻找偶数;指针 j 从右向左寻找奇数;将偶数 nu原创 2021-01-04 12:11:56 · 221 阅读 · 0 评论 -
[M]O-20 表示数值的字符串
[M]O-20 表示数值的字符串问题描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。#本题有一些注意的情况’1 ‘’ 1‘ 像这种前后有空格的都属于TRUE’1. 1‘中间有空格属于FALSE'.2' TRUE 小数点前可没有数字,但是后边必须有问题分析在 C++ 文档 中,描述原创 2021-01-03 14:55:13 · 184 阅读 · 0 评论 -
[M]O-14剪绳子 (数学推导/动态规划/循环求余/快速幂)
[M]O-14剪绳子 (数学推导/动态规划/循环求余/快速幂)参考:求余和数学推导方法看这个!动态规划的解法解析看这个!问题描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m - 1] 。请问 k[0]k[1]…*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+7(1000000007原创 2021-01-02 20:48:51 · 248 阅读 · 0 评论 -
[S&D]O-17 打印从1到最大的n位数(考虑大数)
O-17 打印从1到最大的n位数(考虑大数)问题描述输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。输入: n = 1输出: [1,2,3,4,5,6,7,8,9]方法看了题目很快做完通过,看了题解才发现这个不是这么解答的,应该主要考的是通过字符串解决大数问题。以为这样????class Solution: def printNumbers(self, n: int) -> List[int]:原创 2021-01-01 16:48:42 · 210 阅读 · 0 评论 -
[M]O-16 数值的整数次方
[M]O-16 数值的整数次方问题描述实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。输入: 2.00000, 10输出: 1024.00000输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25思路分析首先分三种情况:(1)x=0时返回0(2)当 n < 0时:把问题转化至 n≥0 的范围内,即执行 x =原创 2021-01-01 12:06:28 · 176 阅读 · 0 评论 -
[S]O-9 用两个栈实现队列
问题描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1] 输入:["CQueue","deleteHead","appendTail","ap原创 2020-12-31 18:18:44 · 143 阅读 · 1 评论 -
[S]O-15 二进制中1的个数
[S]O-15 二进制中1的个数问题描述:请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'输入:11111111111111111111111111111101输出:31解释:原创 2020-12-31 17:54:00 · 151 阅读 · 0 评论 -
[S]O-10-2 青蛙跳台阶问题
[S]O-10-2 青蛙跳台阶问题1.问题描述一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 :输入:n = 2输出:2输入:n = 7输出:21输入:n = 0输出:12.解决方法同10-1那道题 动态规划题解参考link:Link此类求 多少种可能性 的题目一般递推性质 ,即 f(n) 和 f(n−1)…f(1)原创 2020-12-18 11:51:02 · 257 阅读 · 0 评论 -
[S]O-10-1 斐波那契数列
[S]O-10-1 斐波那契数列1.问题描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1示例:输入:n = 2输出:1输入:n = 5原创 2020-12-17 14:00:18 · 206 阅读 · 0 评论 -
【S】O-11.旋转数组的最小数字
【S】O-11.旋转数组的最小数字题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1题解可以忽略的Method直接排序return最小…完全不看题作答但也可以通过,和直接min(numbers)一样好笑!正经Method参考链接:写的很好的题解循环二分排序数组的查找问题首先考虑使用 二分法 解决,其可将 遍历法原创 2020-12-16 16:15:45 · 120 阅读 · 0 评论 -
[S]O-06 从尾到头打印链表
[S]O-06 从尾到头打印链表问题描述:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。输入:head = [1,3,2]输出:[2,3,1]解决方案:method1:列表再反转列表append再反转reverse或者[::-1]都可以列表反转:l.reverse()则已经反转了l本身,l.reverse()的值为null,不是反转结果。l[::-1]也是对列表l进行了反转# Definition for singly-linked list.# class L原创 2020-12-14 20:12:27 · 88 阅读 · 0 评论 -
[S]O-05替换空格
[S]O-05替换空格问题描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。输入:s = "We are happy."输出:"We%20are%20happy."解决方案:Method1/Method2差不多Method1:一个是把str用split转成list,进行字符串拼接,最后一个直接拼接不需要加%20。Method2:直接str里判断,新建list append,最终用join连接字符串。class Solution: def replaceSpace原创 2020-12-14 19:26:54 · 217 阅读 · 0 评论 -
[M]O4二维数组中的查找
[M]O4二维数组中的查找问题描述:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解决方案:参考:题解Method1:由于这个二维数组的特殊:从左到右从上到下依次增大我们从左下角开始遍历,当该值小于 target 值时,向右搜索;大于 target 值时,向上搜索。如果找到 target 则返回 True,否则返回 False。**注意:**当数组为原创 2020-12-13 15:38:30 · 119 阅读 · 0 评论 -
[S]O-03数组中重复数字
[S]O-03数组中重复数字问题描述:数组中重复数字class Solution: def findRepeatNumber(self, nums: List[int]) -> int:解决方案:1- Method1:利用hash初始化:新建 HashSet ,记为 dicdic ;遍历数组 nums 中的每个数字 num:当 num在 dic中,说明重复,直接返回 num ;将 num添加至 dic 中;返回 -1。本题中一定有重复数字,因此这里返回多少都可以。原创 2020-12-13 14:56:58 · 127 阅读 · 2 评论 -
[M]Longest Palindromic Substring最长回文子串
[M]Longest Palindromic Substring最长回文子串题目描述题解思路1.定义2.需要满足状态转移方程3.说明4.初始化和输出什么5.python代码6.复杂度题目描述Given a string s, return the longest palindromic substring in s.题解思路动态规划——状态如何转移一个回文去掉两头以后,剩下的部分依然是回文如果一个字符串的头尾不相等,那么这个字符串一定不是回文串;如果一个字符串的头尾两字符相等,才继续判断下去原创 2020-10-16 13:01:48 · 117 阅读 · 1 评论