Leetcode
黑桃5200
这个作者很懒,什么都没留下…
展开
-
【数据结构与算法】——二分查找
二分法查找算法思想二分查找又称折半查找、 对数搜索 ,是一种在有序数组中查找某一特定元素的搜索算法。假设表中元素是按升序排列选择数组中的元素,将数组分为前后两个区间如果要找的元素比中间的元素大,那么要找的元素在后半区间,更新后半区间为查找的区间如果要找的元素比中间的元素小,那么要找的元素在前半区间,更新前半区间为查找的区间直到最后找到要找的元素,或者整个数组分完...原创 2019-12-31 08:21:25 · 392 阅读 · 0 评论 -
leetcode——167.两数之和 II - 输入有序数组
题目描述给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15]...原创 2019-11-17 17:24:47 · 183 阅读 · 0 评论 -
leetcode——75.颜色分类
题目描述给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]解题思路分别统计个数,然后逐个赋值代码class S...原创 2019-11-16 22:18:12 · 153 阅读 · 0 评论 -
leetcode——80. 删除排序数组中的重复项 II
题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新...原创 2019-11-15 14:40:05 · 144 阅读 · 0 评论 -
leetcode——26. 删除排序数组中的重复项
题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2...原创 2019-11-15 14:36:23 · 154 阅读 · 0 评论 -
leetcode——27. 移除元素
题目描述给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前...原创 2019-11-14 09:25:51 · 198 阅读 · 0 评论 -
leetcode——300. 最长上升子序列
题目描述给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。解题思路定义一个辅助函数,用二分查找完成数组的覆盖或者插入,遍历完整个...原创 2019-11-13 20:38:39 · 210 阅读 · 0 评论 -
leetcode——34. 在排序数组中查找元素的第一个和最后一个位置
题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(logn)O(log n)O(logn) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = ...原创 2019-11-12 23:11:15 · 192 阅读 · 0 评论 -
leetcode——98. 验证二叉搜索树
题目描述给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6...原创 2019-11-08 17:05:15 · 265 阅读 · 0 评论 -
leetcode——15. 三数之和
题目描述解题思路先将给定 nums 排序,复杂度为 O(NlogN)O(NlogN)。异常判断因为 nums[j] > nums[i] > nums[k] >0 ,三个数中必须要有负数。使用双指针 前后夹击,遇到相同的元素,则跳过三数之和小于0,左边的指针i向右移动增大,并且要跳过所有的相同的元素三数之和大于0,右边的指针j向左移动减小,并且要跳过所有的相同的元素...原创 2019-11-07 16:36:14 · 206 阅读 · 0 评论 -
leetcode——1. 两数之和
题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解题思路...原创 2019-11-06 22:15:12 · 145 阅读 · 0 评论 -
leetcode——239. 滑动窗口最大值
题目描述给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值--------...原创 2019-11-06 11:07:59 · 159 阅读 · 0 评论 -
Leetcode——242. 有效的字母异位词
题目描述给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。解题思路思路一:使用sorted函数对字符串进行排序,如果排序之后两个字符串一样...原创 2019-11-06 10:43:41 · 152 阅读 · 0 评论 -
Leetcode——703. 数据流中的第K大元素
题目描述设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中的初始元素。每次调用 KthLargest.add,返回当前数据流中第K大的元素。示例:int k = 3;int[] arr = [4,5,8,2];KthLargest kthL...原创 2019-11-04 21:22:15 · 199 阅读 · 0 评论 -
Leetcode——142.环形链表Ⅱ
题目描述给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node inde...原创 2019-10-28 22:50:53 · 202 阅读 · 0 评论 -
Leetcode——141.环形链表
题目描述给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输...原创 2019-10-28 22:06:06 · 190 阅读 · 0 评论 -
Leetcode——20.有效的括号
题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false...原创 2019-10-28 21:57:48 · 142 阅读 · 0 评论 -
Leetcode——24. 两两交换链表中的节点
题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.解题思路代码class Solution(object): def swapPairs(self, head): """...原创 2019-10-28 21:26:12 · 154 阅读 · 0 评论 -
Leetcode——19.删除链表的倒数第n个节点
题目描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2当删除了倒数第二个节点后,链表变为 1->2->3->5.解题思路判断链表是否为空定义一个哑节点,放在链表的头部计算链表的长度,确定倒数第n个节点的位置快指针走lenth -n步,正好在倒数第...原创 2019-10-28 20:46:01 · 179 阅读 · 0 评论 -
leetcode——206.反转链表
题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解题思路定义一个游标记录当前值。Pre = None链表的第一个节点的next指针指向PrePre 变为当前节点向后遍历节点代码class Solution(object): d...原创 2019-10-28 20:15:35 · 156 阅读 · 0 评论 -
LeetCode(Python3)——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 步:原创 2018-12-12 21:57:12 · 244 阅读 · 0 评论 -
LeetCode(python3)——873.转置矩阵
题目描述给定一个矩阵 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]]提示:1 <= A.length <...原创 2018-12-25 21:28:18 · 170 阅读 · 0 评论 -
LeetCode(python3)——462. 最少移动次数使数组元素相等 II
题目描述给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1。 您可以假设数组的长度最多为10000。例如:输入:[1,2,3]输出:2说明:只有两个动作是必要的(记得每一步仅可使其中一个元素加1或减1):[1,2,3] => [2,2,3] => [2,2,2]题目理解一个数组所有的数都弄相等最少需...原创 2018-12-26 10:55:25 · 539 阅读 · 0 评论 -
Leetcode——63.不同路径II
题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[ [0,...原创 2019-01-07 14:22:04 · 480 阅读 · 0 评论 -
Leetcode——62.不同路径
题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3解释:从左...原创 2019-01-07 14:46:19 · 215 阅读 · 0 评论 -
Leetcode——15.三数之和
题目描述题目理解代码实现class Solution(object): def threeSum(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ # 存储结果列表 res_list = [] ..原创 2019-01-07 21:11:24 · 158 阅读 · 0 评论 -
Leetcode——144. 二叉树的前序遍历
题目描述给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]题目理解二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要A:根节点、B:左节点、C:右节点,前序顺序是ABC(根节点排最先,然后同级先左后右);中序顺序是BAC(先左后根最后右);后序顺序是BCA(先左后...原创 2019-01-19 20:06:52 · 550 阅读 · 0 评论 -
Leetcode——94. 二叉树的中序遍历
题目描述给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]题目理解代码实现 class Solution(object): def inorderTraversal(self, root): """ :type...原创 2019-01-19 21:39:03 · 737 阅读 · 0 评论 -
Leetcode——70.爬台阶
题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + ...原创 2019-01-04 21:59:41 · 294 阅读 · 0 评论 -
Leetcode——122. 买卖股票的最佳时机 II
题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这...原创 2018-12-31 07:53:35 · 200 阅读 · 0 评论 -
LeetCode刷题——哈希表的理解
文章目录1. 任务2. 要求3. 哈希表3.1 【举个栗子】——手机通讯录3.2 哈希函数的构建需要满足的条件3.3 哈希对不同的关键字,可能得到同一个散列地址,即同一个数组下标,这种现象称为冲突,那么我们该如何去处理冲突呢?3.3.1 **开放地址法**3.3.2 **链地址法**4. [两数之和](https://leetcode-cn.com/problems/two-sum/)4.1 任务...原创 2018-12-09 18:33:09 · 643 阅读 · 0 评论 -
LeetCode(python3)——86.分隔链表
题目描述给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5题目理解创建两个链表larg_dummy存储比x大的值,...原创 2018-12-14 20:53:08 · 216 阅读 · 0 评论 -
LeetCode(python)——954. 二倍数对数组
题目描述给定一个长度为偶数的整数数组 A,只有对 A 进行重组后可以满足 “对于每个 0 &lt;= i &lt; len(A) / 2,都有 A[2 * i + 1] = 2 * A[2 * i]” 时,返回 true;否则,返回 false。示例 1:输入:[3,1,3,6]输出:false示例 2:输入:[2,1,2,6]输出:false示例 3:输入:[4,-2,2,...原创 2018-12-20 10:15:08 · 562 阅读 · 0 评论 -
LeetCode(python3)——21. 合并两个有序链表
题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1-&gt;2-&gt;4, 1-&gt;3-&gt;4输出:1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4题目理解采用递归的思想 对链表的指针进行排序每次比较两者中较小的那个节点。将 l1 和 l2 进行比较,谁小谁就原创 2018-12-06 22:34:20 · 276 阅读 · 0 评论 -
LeetCode(Python3)——142. 环形链表 II
题目描述给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index ...原创 2018-12-13 19:59:54 · 717 阅读 · 0 评论 -
LeetCode刷题——链表的理解
目录1. 线性表2. 线性表的形式3. 什么是结点?4. python如何定义链表?4.1 定义一个简单的结点类4.2 将结点通过指针连接成链表5. LeetCode中为什么不定义链表也能提交?5.1 首先进入PlaygroundPlayground5.3 想要改LeetCode的输入怎么办?1. 线性表程序设计里,我们经常需要将同为某个类型的一组数据元素作为一个整体来使用,需要创建这种元素组...原创 2018-12-09 09:05:22 · 777 阅读 · 0 评论 -
LeetCode(python3)——83. 删除排序链表中的重复元素
题目描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1-&amp;amp;gt;1-&amp;amp;gt;2输出: 1-&amp;amp;gt;2示例 2:输入: 1-&amp;amp;gt;1-&amp;amp;gt;2-&amp;amp;gt;3-&amp;amp;gt;3输出: 1-&amp;amp;gt;2-&a原创 2018-12-08 19:23:10 · 161 阅读 · 0 评论 -
LeetCode(python3)——82. 删除排序链表中的重复元素 II
题目描述给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1-&amp;amp;amp;amp;gt;2-&amp;amp;amp;amp;gt;3-&amp;amp;amp;amp;gt;3-&amp;amp;amp;amp;gt;4-&amp;amp;amp;amp;gt;4-&amp;amp;amp;amp;gt;5输出: 1-&原创 2018-12-08 19:19:10 · 286 阅读 · 0 评论 -
LeetCode(python3)——46.全排列问题
全排列题目描述给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]题目理解对给定数组里面的数进行全排列,最后返回一个有CnnC_n^nCnn个排列的数组实现代码class Solution(object): def perm...原创 2018-12-03 16:40:27 · 231 阅读 · 0 评论 -
LeetCode(python3)——19. 删除链表的倒数第N个节点
题目描述给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1-&amp;gt;2-&amp;gt;3-&amp;gt;5.题目理解什么是链表单链表代码实现# Definition for sing原创 2018-12-05 17:18:02 · 209 阅读 · 0 评论