LeetCode
文章平均质量分 55
lgy54321
这个作者很懒,什么都没留下…
展开
-
动态规划--字符串的编辑距离(LeetCode: 72. Edit Distance)
72. Edit Distance问题描述:给定两个字符串A和B,要用最少的操作将字符串A转换成字符串B。其中字符串操作包括:(1)删除一个字符(Insert a character)(2)插入一个字符(Delete a character)(3)修改一个字符(Replace a character)将字符串A转换成B串所用的最少字符操作数称为字符串A到 B的编辑距离,又称为Leven...原创 2019-06-10 21:55:05 · 287 阅读 · 0 评论 -
栈-155. Min Stack
[155. Min Stack(https://leetcode.com/problems/min-stack/description/)题目描述设计一个支持push,pop,top等操作并且可以在O(1)时间内检索出最小元素的堆栈。push(x)–将元素x插入栈中pop()–移除栈顶元素top()–得到栈顶元素getMin()–得到栈中最小元素例子MinStack minS...原创 2019-05-26 22:23:41 · 112 阅读 · 0 评论 -
二分-153. Find Minimum in Rotated Sorted Array 162. Find Peak Element
153. Find Minimum in Rotated Sorted Array题目描述假设按照升序排序的数组,在预先未知的某个点上进行了旋转。 ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。(假设数组中不存在重复元素)例子Example 1: Input: [3,4,5,1,2] Output: 1Ex...原创 2019-05-26 17:05:27 · 121 阅读 · 0 评论 -
二分-74. Search a 2D Matrix 240. Search a 2D Matrix II
74. Search a 2D MatrixWrite an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:Integers in each row are sorted from left to right.The firs...原创 2019-05-26 16:41:14 · 199 阅读 · 0 评论 -
二分-34. Find First and Last Position of Element in Sorted Array
34. Find First and Last Position of Element in Sorted Array题目描述给定一个按照升序排列的整数数组 nums和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。例子Example 1: Input: nums =...原创 2019-05-26 16:04:42 · 143 阅读 · 0 评论 -
二分-69. Sqrt(x)
69sqrt题目描述实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。例子Example 1: Input: 4 Output: 2Example 2: Input: 8 Output: 2 Explanation: The square root of 8 is 2.82842…,...原创 2019-05-26 15:23:35 · 129 阅读 · 0 评论 -
leetcode15--三数之和
题目给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]思路给定一个数列a+b+c=0...原创 2019-01-08 21:08:29 · 151 阅读 · 0 评论 -
leetcode-二叉树的前中后遍历(94、144、145)
中序遍历中序遍历的顺序:左中右思路递归每次递归,只需要判断结点是不是None,否则按照左中右的顺序打印出结点value值class Solution: def inorderTraversal(self, root): """ :type root: TreeNode :rtype: List[int] """...原创 2019-01-13 21:40:08 · 132 阅读 · 0 评论 -
leetcode数组--最少移动次数使数组元素相等
题目给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数。每次移动可以使 n - 1 个元素增加 1。示例:输入:[1,2,3]输出:3解释:只需要3次移动(注意每次移动会增加两个元素的值):[1,2,3] => [2,3,3] => [3,4,3] => [4,4,4]思路一开始自己对其理解有偏差,所有的数与最大的数比较,每...原创 2018-12-25 19:58:12 · 1364 阅读 · 0 评论 -
LeetCode687. 最长同值路径
题目给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示示例 1:输入: 5 / \ 4 5 / \ \ 1 1 5输出:2示例 2:输入: 1 / ...原创 2019-01-10 15:42:55 · 174 阅读 · 0 评论 -
树--101.镜像树
[101. Symmetric Tree(https://leetcode.com/problems/symmetric-tree/)题目描述判断是否是镜像二叉树(对称)例子 略思想 (递归) 定义一辅助函数,输入为left和right,判断是否相等。 (迭代) 定义两个栈,层次遍历时判断,并分别从左向右和从右向左存储。解法1 递归# Definition for a bin...原创 2019-05-27 16:46:15 · 280 阅读 · 0 评论 -
树-最大深度
104. Maximum Depth of Binary Tree题目描述二叉树的最大深度例子 略 思想 (递归) 最大深度等于左右子树的最大深度加1。 (非递归) 层次遍历解法1 递归# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# ...原创 2019-05-27 20:27:37 · 530 阅读 · 0 评论 -
树--给定二叉树的两个节点,找到它俩的最低公共祖先
236. Lowest Common Ancestor of a Binary TreeGiven the following binary tree: root = [3,5,1,6,2,0,8,null,null,7,4] Example 1:Input: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1Output: 3...原创 2019-05-28 19:09:42 · 265 阅读 · 0 评论 -
树--给定二叉搜索树(BST)和target
[653. Two Sum IV - Input is a BST(https://leetcode.com/problems/two-sum-iv-input-is-a-bst/)题目描述给定二叉搜索树(BST)和target。如果BST存在两个元素和为target,返回true;否则返回false例子 略 思想 (法1、2 - 借助辅助字典,没有用到BST这个条件) 两个数的和为ta...原创 2019-05-28 14:21:57 · 255 阅读 · 0 评论 -
树--层次遍历二叉树
102. Binary Tree Level Order TraversalFor example:Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7return its level order traversal as:[ [3], [9,20], [15,7]...原创 2019-05-28 14:00:16 · 150 阅读 · 0 评论 -
树—判断它是否是二叉树的前序遍历序列化
331. Verify Preorder Serialization of a Binary Tree题目描述利用前序遍历序列化二叉树时,遇到非空结点时,记录结点的值;如果是空节点,用#记录。 给定一个逗号分隔的字符串,判断它是否是二叉树的前序遍历序列化。不需重建二叉树例子 Example 1:Input: "9,3,4,#,#,1,#,#,2,#,6,#,#" Output: tr...原创 2019-05-28 13:51:35 · 804 阅读 · 0 评论 -
动态规划--最大连续子序列和
53最大连续子序列和题目描述最大连续子序列和。(至少包含一个数组)例子Input: [-2,1,-3,4,-1,2,1,-5,4], Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6.思想 法1 - DP。dp[i]表示以i位置结尾的最大值,dp[i] = max(dp[i-1] + nums[i], nums[i...原创 2019-05-30 19:59:27 · 303 阅读 · 0 评论 -
树--给定前序和中序遍历,重构二叉树。
105. Construct Binary Tree from Preorder and Inorder Traversal题目描述给定前序和中序遍历,重构二叉树。思想 前序 - 根左右;中序 - 左右根 (递归)解法# Definition for a binary tree node.# class TreeNode(object):# def __init__(...原创 2019-05-28 11:13:47 · 195 阅读 · 0 评论 -
树--二叉树的后序遍历
[145. Binary Tree Postorder Traversal(https://leetcode.com/problems/binary-tree-postorder-traversal/)题目描述二叉树的后序遍历思想 (递归)(迭代) 先找到后序遍历的逆序根右左,然后再求得后序遍历。解法1 左右根,递归。# Definition for a binary tre...原创 2019-05-28 11:03:55 · 307 阅读 · 0 评论 -
串--165. Compare Version Numbers
[165. Compare Version Numbers(https://leetcode.com/problems/compare-version-numbers/)Compare two version numbers version1 and version2.If version1 > version2 return 1; if version1 < version2 r...原创 2019-05-23 16:37:56 · 109 阅读 · 0 评论 -
串--49. Group Anagrams
leetcode 49. Group Anagrams使用【python】求解题目:Given an array of strings, group anagrams together.For example, given: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],Return:[[“ate”, “eat”,“tea”],[“nat”,“...原创 2019-05-23 15:57:42 · 112 阅读 · 0 评论 -
leetcode698. 划分为k个相等的子集
题目给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。示例 1:输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4输出: True说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。注意:1 <= k <= len(nums) <= 160 &l...原创 2019-01-10 15:25:37 · 633 阅读 · 0 评论 -
LeetCode数组867. 转置矩阵
题目给定一个矩阵 A, 返回 A 的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]思路矩阵的转置就是从行变成列, 列变成行先定义一个最...原创 2018-12-24 21:38:07 · 144 阅读 · 0 评论 -
leetcode -- 买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是...原创 2018-12-28 20:59:37 · 214 阅读 · 0 评论 -
leetcode 141判断是否有环
题目给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0 输出:tru...原创 2018-12-09 16:23:09 · 330 阅读 · 0 评论 -
leetcode86分隔链表
题目给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5思路新建两个链表,给定的特定值。对链表分隔,将小于特定值的节点...原创 2018-12-14 18:42:41 · 215 阅读 · 0 评论 -
LeetCode数组870 优势洗牌
题目给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。返回 A 的任意排列,使其相对于 B 的优势最大化。示例 1:输入:A = [2,7,11,15], B = [1,10,4,11]输出:[2,11,7,15]示例 2:输入:A = [12,24,8,32], B = [13,25,32,11]输出:[...原创 2018-12-20 12:51:34 · 287 阅读 · 0 评论 -
LeetCode21-合并两个有序链表
题目:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思想:1.确定是否两个链表是否含都为空链表2.在两个链表无空链表下确定第一个节点,比较链表1与链表2的第一个节点的值,将值小的节点保存下...原创 2018-12-06 21:23:09 · 159 阅读 · 0 评论 -
LeetCode 142 环形链表 II python
题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1...原创 2018-12-13 21:11:01 · 238 阅读 · 0 评论 -
【Leetcode】61.旋转链表
题目给定一个链表,旋转链表,将链表每个节点向右移动 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-原创 2018-12-12 21:19:04 · 120 阅读 · 0 评论 -
排序
文章目录排序的简介排序的分类1交换式排序法:1.1 冒泡排序(Bubblesorting)的基本思想是:1.2快速排序法2选择式排序法排序的简介排序是将一群数据,按照指定的顺序进行排列的过程。排序(Sorting)是数据处理中一种很重要的运算,同时也是很常见的运算,一般数据处理工作的25%的时间都是在进行排序。简单地讲,排序就是把一组记录(元素)按照某个域的值的递增或者递减的次序重新排列的过程...原创 2018-12-12 16:58:01 · 199 阅读 · 0 评论 -
Leetcode 23--mergeKList
题目合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6思想分治法:设拆分的层数为m,共有链表n个,则,则得到,拆分后每一层的时间复杂度与链表的长度呈线性关系,则...原创 2018-12-07 20:22:18 · 239 阅读 · 0 评论 -
Leetcode46-全排列
class Solution(object): def permute(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ self.res = [] sub = [] self.dfs(nums...原创 2018-12-04 19:55:22 · 111 阅读 · 0 评论 -
LeetCode数组 873. 最长的斐波那契子序列的长度
题目如果序列 X_1, X_2, …, X_n 满足下列条件,就说它是 斐波那契式 的:n >= 3对于所有 i + 2 <= n,都有 X_i + X_{i+1} = X_{i+2}给定一个严格递增的正整数数组形成序列,找到 A 中最长的斐波那契式的子序列的长度。如果一个不存在,返回 0 。(回想一下,子序列是从原序列 A 中派生出来的,它从 A 中删掉任意数量的元素(也...原创 2018-12-20 16:51:28 · 542 阅读 · 0 评论 -
LeetCode--线性表(206)
文章目录线性表1.定义:2.表现形式2.1 顺序表示(顺序表)2.2链表结点单链表如图:单链表基本操作原理题目思路pythonjava线性表1.定义:零个或多个数据元素的有限序列。【线性表】:某类元素的集合并且记录着元素之间一种顺序关系,是最基本的数据结构之一,例如:list 和 tuple2.表现形式2.1 顺序表示(顺序表)概念:用一组地址连续的存储单元依次存储线性表的数据元素,...原创 2018-12-10 14:26:52 · 208 阅读 · 0 评论 -
LeetCode234 回文链表
题目请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true代码# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val ...原创 2018-12-17 20:49:18 · 96 阅读 · 0 评论 -
leetcode142 对链表进行插入排序
题目对链表进行插入排序插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直...原创 2018-12-11 20:24:46 · 113 阅读 · 0 评论 -
leetcode 33. 搜索旋转排序数组
题目假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], ...原创 2018-12-22 20:34:48 · 112 阅读 · 0 评论 -
LeetCode 二叉树
二叉树二叉树是树的特殊一种,具有如下特点:1、每个结点最多有两颗子树,结点的度最大为2。2、左子树和右子树是有顺序的,次序不能颠倒。3、即使某结点只有一个子树,也要区分左右子树。特殊的二叉树斜树所有的结点都只有左子树(左斜树),或者只有右子树(右斜树)。这就是斜树,应用较少满二叉树所有的分支结点都存在左子树和右子树,并且所有的叶子结点都在同一层上,这样就是满二叉树。就是完美圆满的意思...原创 2018-12-11 18:12:36 · 235 阅读 · 0 评论 -
leetcode 217. 存在重复元素
题目给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true思路一种用字典统计次数,一种用集合判断是否重复...原创 2018-12-27 21:03:37 · 102 阅读 · 0 评论