
leetcode
哈喽2020
这个作者很懒,什么都没留下…
展开
-
leetcode的python实现--350. 两个数组的交集 II
350. 两个数组的交集 II题目描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果 nums1 的大小比 nums2原创 2020-07-13 21:08:50 · 213 阅读 · 0 评论 -
leetcode的python实现--34. 在排序数组中查找元素的第一个和最后一个位置
leetcode–34.在排序数组中查找元素的第一个和最后一个位置题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: [-1,-1]原创 2020-07-09 18:22:44 · 382 阅读 · 0 评论 -
leetcode的python实现-81 搜索旋转排序数组 II
leetcode的python实现-81 搜索旋转排序数组 II题目描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例 2:输入: nums = [2,5,6,0,0,1,2], target原创 2020-07-09 18:22:17 · 249 阅读 · 0 评论 -
leetcode的python实现-33 搜索旋转排序数组
leetcode的python实现-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], target = 0输出: 4示例 2:输入:原创 2020-07-09 18:19:55 · 169 阅读 · 0 评论 -
leetcode的python实现--32. 最长有效括号
leetcode的python实现–32. 最长有效括号题目描述给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-valid-parentheses著作权归领扣网络所有。商业转载原创 2020-07-04 19:02:36 · 322 阅读 · 0 评论 -
leetcode的python实现--108. 将有序数组转换为二叉搜索树
108. 将有序数组转换为二叉搜索树题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /-10 5来源:力扣(LeetCode)官网连接:https://l原创 2020-07-03 10:38:16 · 387 阅读 · 0 评论 -
leetcode的python实现-718. 最长重复子数组
leetcode的python实现-718. 最长重复子数组题目描述给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。示例 1:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出: 3解释:长度最长的公共子数组是 [3, 2, 1]。说明:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100来源:力扣(LeetCode)链接:https://leetcode-cn.com原创 2020-07-01 10:31:17 · 371 阅读 · 0 评论 -
leetcode的python实现-(225) 用队列实现栈
leetcode的python实现-(225) 用队列实现栈题目描述使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标原创 2020-06-30 11:30:55 · 286 阅读 · 0 评论 -
leetcode的python实现-(232)用栈实现队列
leetcode的python实现-(232)用栈实现队列题目描述使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty();原创 2020-06-30 11:14:19 · 319 阅读 · 0 评论 -
leetcode的python实现--剑指offer 09 用两个栈实现队列
剑指 Offer 09. 用两个栈实现队列题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]]输出:[null,null,3,-1]示例 2:输入:[“CQueue”,“d原创 2020-06-30 11:13:18 · 3944 阅读 · 0 评论 -
leetcode的python实现-(209) 长度最小的子数组
leetcode的python实现-(209) 长度最小的子数组题目描述给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。思路1.双指针.使用两个指针l和r, 指针r先往后扫描,得到前缀和第一次大于目标值s时,指针l 再从头开始扫描, 每次l原创 2020-06-28 21:49:34 · 389 阅读 · 0 评论 -
leetcode的python实现-面试题 02.01. 移除重复节点
leetcode-面试题 02.01. 移除重复节点题目描述编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1, 2, 3, 3, 2, 1]输出:[1, 2, 3]示例2:输入:[1, 1, 1, 1, 2]输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。进阶:如果不得使用临时缓冲区,该怎么解决?官网题目链接:https://leetcode-cn.com/problems/remove-dupli原创 2020-06-26 21:55:36 · 349 阅读 · 0 评论 -
leetcode的python实现--(64)最小路径和--动态规划
动态规划的一个模型三个特征的特点:leetcode-(64)最小路径和题目描述给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例输入:[ [1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。思路因为只能向右或者向下移动,要走到走到在第i行第j列的网格,必须是从第i-1行第j列的网格或者第i行第j-1列的网格移动过来,假设二维数组dp[原创 2020-06-25 16:56:04 · 361 阅读 · 0 评论 -
leetcode的python实现--(63)不同路径 II--动态规划
leetcode-(63)不同路径 II题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[[0,0,0],[0,1,0],[0,0,0]]输出: 2解释:3x3 网格的原创 2020-06-25 16:54:26 · 343 阅读 · 0 评论 -
leetcode的python实现--(62)不同路径--动态规划
首先简要回顾以下动态规划的特点。动态规划可总结为“一个模型三个特征”。一个模型指的是“多阶段决策最优解模型”,即用动态规划来解决最优问题的过程,需要经历多个决策阶段。每个决策阶段都对应着一组状态。然后我们寻找一组决策序列,经过这组决策序列,能够产生最终期望求解的最优值。三个特征分别是最优子结构、无后效性和重复子问题。1. 最优子结构指的是,问题的最优解包含子问题的最优解,后面阶段的状态可以通过前面阶段的状态推导出来。2. 无后效性有两层含义,第一层含义是,在推导后面阶段的状态的时候,我们只关心前面阶原创 2020-06-25 16:49:47 · 352 阅读 · 0 评论