![](https://img-blog.csdnimg.cn/20210109103434370.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode学习笔记
文章平均质量分 76
leetcode
总裁余(余登武)
这个作者很懒,什么都没留下…
展开
-
LeetCode讲解算法2-数据结构[栈和队列](Python版)
LeetCode讲解算法2-数据结构[栈和队列](Python版)原创 2024-03-24 19:55:53 · 1025 阅读 · 0 评论 -
LeetCode讲解算法1-排序算法(Python版)
工作原理,首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。快速排序是选取一个“哨兵”(pivot),将小于pivot放在左边,把大于pivot放在右边,分割成两部分,并且可以固定pivot在数组的位置,在对左右两部分继续进行排序。冒泡排序时针对相邻元素之间的比较,可以将大的数慢慢“沉底”(数组尾部)。的执行思路是:把数组内的元素按下标增量分组,对每一组元素进行插入排序后,缩小增量并重复之前的步骤,直到增量到达1。原创 2024-03-18 21:46:55 · 1252 阅读 · 0 评论 -
leetcode贪心算法题集锦(持续更新中)
leetcode贪心算法题集锦leetcode贪心算法题集锦(持续更新中)。python 和C++编写。原创 2021-07-10 21:40:52 · 777 阅读 · 3 评论 -
leetcode最小路径和 (动态规划)python
描述 给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径。你在同一时间只能向下或者向右移动一步样例 样例 1:输入: [[1,3,1],[1,5,1],[4,2,1]]输出: 7样例解释:路线为: 1 -> 3 -> 1 -> 1 -> 1。样例 2:输入: [[1,3,2]]输出: 6解释: 路线是: 1 -> 3 -> 2思路题目要求只能往下或者向右走。则单元格dp(i,j)题解应该是单元格d原创 2020-06-28 16:38:00 · 1206 阅读 · 0 评论 -
LeetCode 情侣牵手 (贪心)
描述N对夫妇坐在2N个排成一排的座位上. 现求最小的交换数量,使每对夫妇并坐一起,他们可以手牵着手。一次交换可选择任何两个人交换座位。人和座位由从0到2N-1的整数表示,夫妻按顺序编号,第一对是(0,1),第二对是(2,3),以此类推,最后一对是(2N-2,2N-1)。初始座位由row [i]给出,表示坐在第i座位的人的编号。1.len(row) 是偶数且范围为 [4, 60].2.row 一定是[0, 1…len(row)-1]的一个排列.您在真实的面试中是否遇到过这个题?样例样例 1:原创 2020-06-20 17:22:54 · 592 阅读 · 0 评论 -
LeetCode移掉k位数字(贪心算法)python
描述给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。num的长度小于10002,且将≥k。给定的num不包含任何前导零。您在真实的面试中是否遇到过这个题?样例Example 1:Input: num = “1432219”, k = 3Output: “1219”Example 2:Input: num = “10200”, k = 1Output: “200”说明:去掉4、3、2三个数字,形成最小的新数字1219。Example 3:Inp原创 2020-06-18 20:43:15 · 673 阅读 · 0 评论 -
leetcode 分饼干 贪心算法python
描述样例样例1:输入:[1,2,3], [1,1]输出:1说明:你有三个孩子和两块饼干,三个孩子的贪吃指数分别是1,2,3虽然你有两块饼干,但是因为它们的大小都为1,你只能满足让贪吃指数为1的孩子满足,因此你应该输出1样例2:输入:[1,2], [1,2,3]输出:2说明:你有两个孩子和三块饼干,两个孩子的贪吃指数分别是1和2这三块饼干的大小足以满足所有的孩子,因此你应该输出2贪心算法求解贪心算法原理:贪心策略是指从问题的初始状态出发,通过若干次贪心选择得出最优值(或较优解)的原创 2020-06-16 14:59:10 · 1036 阅读 · 1 评论 -
leetcode解码方法(动态规划python)
描述有一个消息包含A-Z通过以下规则编码‘A’ -> 1‘B’ -> 2…‘Z’ -> 26现在给你一个加密过后的消息,问有几种解码的方式我们不能解码空串,因此若消息为空,你应该返回0。消息的长度 n \leq 100n≤100您在真实的面试中是否遇到过这个题?样例样例 1:输入: “12”输出: 2解释: 它可以被解码为 AB (1 2) 或 L (12).样例 2:输入: “10”输出: 1思路动态规划,从s的位置1读起,每次读取两个数,因为只要是原创 2020-06-15 20:01:37 · 469 阅读 · 0 评论 -
leetcode最大矩形 (动态规划 python)
描述给你一个二维矩阵,权值为False和True,找到一个最大的矩形,使得里面的值全部为True,输出它的面积您在真实的面试中是否遇到过这个题?样例样例1输入:[[1, 1, 0, 0, 1],[0, 1, 0, 0, 1],[0, 0, 1, 1, 1],[0, 0, 1, 1, 1],[0, 0, 0, 0, 1]]输出: 6样例2输入:[[0,0],[0,0]]输出: 0解题思路假设我们输入的矩形第一行数时是:[1, 1, 1, 0, 1,1,0,1,1]原创 2020-06-13 18:24:19 · 1186 阅读 · 3 评论 -
LeetCode最大子序和 (动态规划)python
描述给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。子数组最少包含一个数您在真实的面试中是否遇到过这个题?样例样例1:输入:[−2,2,−3,4,−1,2,1,−5,3]输出:6解释:符合要求的子数组为[4,−1,2,1],其最大和为 6。样例2:输入:[1,2,3,4]输出:10解释:符合要求的子数组为[1,2,3,4],其最大和为 10。思路 动态规划设sum[i]为以第i个元素结尾的最大的连续子数组的和。假设对于元素i,所有以它前面的元素结尾的子数组的长度都已经原创 2020-06-12 17:26:43 · 631 阅读 · 0 评论 -
Leetcode 534打劫房屋II python
描述在上次打劫完一条街道之后,窃贼又发现了一个新的可以打劫的地方,但这次所有的房子围成了一个圈,这就意味着第一间房子和最后一间房子是挨着的。每个房子都存放着特定金额的钱。你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,且 当相邻的两个房子同一天被打劫时,该系统会自动报警。给定一个非负整数列表,表示每个房子中存放的钱, 算一算,如果今晚去打劫,在不触动报警装置的情况下, 你最多可以得到多少钱 。这题是House Robber的扩展,只不过是由直线变成了圈您在真实的面试中是否遇到过这个题?样原创 2020-06-10 15:34:30 · 442 阅读 · 0 评论 -
LeetCode 392打劫房屋 python
描述假设你是一个专业的窃贼,准备沿着一条街打劫房屋。每个房子都存放着特定金额的钱。你面临的唯一约束条件是:相邻的房子装着相互联系的防盗系统,且 当相邻的两个房子同一天被打劫时,该系统会自动报警。给定一个非负整数列表,表示每个房子中存放的钱, 算一算,如果今晚去打劫,在不触动报警装置的情况下, 你最多可以得到多少钱 。您在真实的面试中是否遇到过这个题?样例样例 1:输入: [3, 8, 4]输出: 8解释: 仅仅打劫第二个房子.样例 2:输入: [5, 2, 1, 3]输出: 8解释:原创 2020-06-10 14:55:06 · 464 阅读 · 0 评论 -
LeetCode419罗马数字转整数python
描述给定一个罗马数字,将其转换成整数。输入数据保证返回的结果1到3999的范围内。难点:通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。则特列数字有4,9,40,90,400,900。来自答案区class Solution: def romanToInt(self, s): """ :t原创 2020-06-09 15:57:46 · 350 阅读 · 0 评论 -
leetcode 418 整数转罗马数字
描述给定一个整数,将其转换成罗马数字。保证给定的整数在1到3999的范围内。样例 1:输入: 1输出: “I”样例 2:输入: 99输出: “XCIX”class Solution(object): def intToRoman(self, num): """ :type num: int :rtype: str """ digit = [1000,900,500,400,100,90,50,10,9,原创 2020-06-09 15:37:03 · 357 阅读 · 0 评论 -
leetcode111 爬楼梯 python实现
动态规划类题目描述假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?您在真实的面试中是否遇到过这个题?样例Example 1:Input: n = 3Output: 3Explanation:1) 1, 1, 12) 1, 23) 2, 1total 3.Example 2:Input: n = 1Output: 1Explanation: only 1 way.思路:上第I级台阶的方法总共有两大种,第一种是原创 2020-05-29 14:54:38 · 939 阅读 · 0 评论 -
LeetCode114. 不同的路径 python实现
有一个机器人的位于一个 m × n 个网格左上角。机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。问有多少条不同的路径?n和m均不超过100且答案保证在32位整数可表示范围内。样例Example 1:Input: n = 1, m = 3Output: 1思路从数学的角度考虑, 机器人一共需要向两个方向各走 m - 1, n - 1 步,即总共要走m + n - 2步,选取其中的m - 1步往右走即可。所以答案就是class Solution(object):原创 2020-05-28 15:20:14 · 420 阅读 · 0 评论 -
二分查找 寻找指定数 python 实现
二分查找给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。样例样例 1:输入:[1,4,4,5,7,7,8,9,9,10],1输出: 0样例解释: 第一次出现在第0个位置。样例 2:输入: [1, 2, 3, 3, 4, 5, 10],3输出: 2样例解释: 第一次出现在第2个位置样例 3:输入: [1, 2, 3, 3, 4, 5, 10],6输出原创 2020-05-27 15:54:26 · 661 阅读 · 0 评论 -
leetcode 寻找重复的数633 python
给出一个数组 nums 包含 n + 1 个整数,每个整数是从 1 到 n (包括边界),保证至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。1.不能修改数组(假设数组只能读)2.只能用额外的O(1)的空间3.时间复杂度小于O(n^2)4.数组中只有一个重复的数,但可能重复超过一次您在真实的面试中是否遇到过这个题?样例样例 1:输入:[5,5,4,3,2,1]输出:5思路1:(对所有数求和-对所有无重复的数求和)/两个数组长度的差=重复值class Soluti原创 2020-05-26 13:42:09 · 302 阅读 · 0 评论 -
leetcodeZ字形变换第1363题python
描述给定一个字符串 s 和一个整数 numRows. 你需要把 s 排布成一个 numRows 行的 “之” 字形. 然后返回逐行阅读的结果.注意, “之” 字形是按照 下->右上->下->右上…的方向延伸的.| /| /|| / | / | …| / | / | …|/ |/ |/样例样例 1:输入: “PAYPALISHIRING”, numRows = 3输出: “PAHNAPLSIIGYIR”解释:转换之后我们会得到P A原创 2020-05-25 16:12:16 · 542 阅读 · 0 评论 -
leetcode装最多水的容器383
描述给定 n 个非负整数 a1, a2, …, an, 每个数代表了坐标中的一个点 (i, ai)。画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)和(i, 0)。找到两条线,使得其与 x 轴共同构成一个容器,以容纳最多水。容器不可倾斜。样例 :输入: [1, 3, 2, 2]输出: 4解释:选择 a1, a2, 容量为 1 * 1 = 1选择 a1, a3, 容量为 1 * 2 = 2选择 a1, a4, 容量为 1 * 3 = 3选择 a2, a3, 容量为 2 *原创 2020-05-24 18:04:57 · 296 阅读 · 0 评论 -
leetcode最长无重复子串384题
给定一个字符串,请找出其中无重复字符的最长子字符串。样例样例 1:输入: “abcabcbb”输出: 3解释: 最长子串是 “abc”.样例 2:输入: “bbbbb”输出: 1解释: 最长子串是 “b”.挑战O(n) 时间复杂度class Solution(object): def lengthOfLongestSubstring(self, s): record=dict()#字典key为字,value为位置索引 res,start=0,0原创 2020-05-22 18:21:28 · 333 阅读 · 0 评论 -
LeetCode两数之和 56 python
描述中文English给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 0 到 n-1。Example1:给出 numbers = [2, 7, 11, 15], target = 9, 返回 [0, 1].Example2:给出 numbers = [15, 2, 7, 11], target = 9, 返回 [1, 2].class Solution:原创 2020-05-22 10:16:36 · 348 阅读 · 0 评论