![](https://img-blog.csdnimg.cn/9feeded7475f4161843cc8abd6ab0822.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法刷题
文章平均质量分 62
做一些算法题,主要用python语言实现
unseven
懒癌晚期,什么都没有写
展开
-
模拟行走机器人-python
leetcode第874题原创 2023-07-19 10:48:56 · 735 阅读 · 0 评论 -
包含每个查询的最小区间-python
leetcode第1851题原创 2023-07-18 16:04:56 · 129 阅读 · 0 评论 -
统计按位或能得到最大值的子集数目-python
leetCode第2044题 统计按位或能得到最大值的子集数目链接:https://leetcode-cn.com/problems/count-number-of-maximum-bitwise-or-subsets给你一个整数数组 nums ,请你找出 nums 子集 按位或 可能得到的 最大值 ,并返回按位或能得到最大值的 不同非空子集的数目 。如果数组 a 可以由数组 b 删除一些元素(或不删除)得到,则认为数组 a 是数组 b 的一个 子集 。如果选中的元素下标位置不一样,则认为两个子集 不原创 2022-03-15 15:05:39 · 647 阅读 · 0 评论 -
统计最高分的节点数目-python
leetCode第2049题 统计最高分的节点数目链接:https://leetcode-cn.com/problems/count-nodes-with-the-highest-score给你一棵根节点为 0 的 二叉树 ,它总共有 n 个节点,节点编号为 0 到 n - 1 。同时给你一个下标从 0 开始的整数数组 parents 表示这棵树,其中 parents[i] 是节点 i 的父节点。由于节点 0 是根,所以 parents[0] == -1 。一个子树的 大小 为这个子树内节点的数目。每原创 2022-03-11 23:22:06 · 1187 阅读 · 0 评论 -
适合打劫银行的日子-python
lettCode第2100题 适合打劫银行的日子链接:https://leetcode-cn.com/problems/find-good-days-to-rob-the-bank你和一群强盗准备打劫银行。给你一个下标从 0 开始的整数数组 security ,其中 security[i] 是第 i 天执勤警卫的数量。日子从 0 开始编号。同时给你一个整数 time 。如果第 i 天满足以下所有条件,我们称它为一个适合打劫银行的日子:第 i 天前和后都分别至少有 time 天。第 i 天前连续原创 2022-03-06 12:12:22 · 811 阅读 · 0 评论 -
子数组范围和-python
leetCode第2104题 子数组范围和链接:https://leetcode-cn.com/problems/sum-of-subarray-ranges给你一个整数数组 nums 。nums 中,子数组的 范围 是子数组中最大元素和最小元素的差值。返回 nums 中 所有 子数组范围的 和 。子数组是数组中一个连续 非空 的元素序列。示例 1:输入:nums = [1,2,3]输出:4解释:nums 的 6 个子数组如下所示:[1],范围 = 最大 - 最小 = 1 - 1 = 0原创 2022-03-04 14:29:11 · 1181 阅读 · 0 评论 -
各位相加-python
leetCode第258题 各位相加链接:https://leetcode-cn.com/problems/add-digits给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。示例 1:输入: num = 38输出: 2 解释: 各位相加的过程为:38 --> 3 + 8 --> 1111 --> 1 + 1 --> 2由于 2 是一位数,所以返回 2。示例 2:输入: num = 0输出: 0提示:0 <=原创 2022-03-03 09:55:27 · 1061 阅读 · 0 评论 -
寻找最近的回文数-python
leetCode第564题 寻找最近的回文数链接:https://leetcode-cn.com/problems/find-the-closest-palindrome给定一个表示整数的字符串 n ,返回与它最近的回文整数(不包括自身)。如果不止一个,返回较小的那个。“最近的”定义为两个整数差的绝对值最小。示例 1:输入: n = "123"输出: "121"示例 2:输入: n = "1"输出: "0"解释: 0 和 2是最近的回文,但我们返回最小的,也就是 0。提示:1 &原创 2022-03-03 09:50:15 · 888 阅读 · 0 评论 -
Z 字形变换-python
leetCode第6题 Z 字形变换链接:https://leetcode-cn.com/problems/zigzag-conversion将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。请你实现这原创 2022-03-01 23:10:28 · 687 阅读 · 0 评论 -
最多可达成的换楼请求数目-python
leetCode第1601题 最多可达成的换楼请求数目链接:https://leetcode-cn.com/problems/maximum-number-of-achievable-transfer-requests我们有 n 栋楼,编号从 0 到 n - 1 。每栋楼有若干员工。由于现在是换楼的季节,部分员工想要换一栋楼居住。给你一个数组 requests ,其中 requests[i] = [fromi, toi] ,表示一个员工请求从编号为 fromi 的楼搬到编号为 toi 的楼。一开始原创 2022-03-01 08:25:11 · 152 阅读 · 0 评论 -
最优除法-python
leetCode第553题 最优除法链接:https://leetcode-cn.com/problems/optimal-division给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如, [2,3,4] -> 2 / 3 / 4 。但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,才能得到最大的结果,并且返回相应的字符串格式的表达式。你的表达式不应该含有冗余的括号。示例:输入: [1000,100,10,2]输出: "1000/(100/10原创 2022-02-27 20:09:51 · 159 阅读 · 0 评论 -
球会落何处-python
leetCode第1706题 球会落何处链接:https://leetcode-cn.com/problems/where-will-the-ball-fall用一个大小为 m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,可以将球导向左侧或者右侧。将球导向右侧的挡板跨过左上角和右下角,在网格中用 1 表示。将球导向左侧的挡板跨过右上角和左下角,在网格中用 -1 表示。在箱子每一列的顶端各放一颗球原创 2022-02-26 21:22:06 · 133 阅读 · 0 评论 -
增量元素之间的最大差值-python
leetCode第2016题 增量元素之间的最大差值链接:https://leetcode-cn.com/problems/maximum-difference-between-increasing-elements给你一个下标从 0 开始的整数数组 nums ,该数组的大小为 n ,请你计算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 nums[i] < nums[j] 。返回 最大差值 。如果不存在满足要求的 i 和 j原创 2022-02-26 15:42:16 · 994 阅读 · 0 评论 -
十大排序算法-python
冒泡排序一种简单的排序方法。它重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换。走访数列的工作是重复地进行直到不需要进行交换,也就是说该数列已经排序完成。这个算法的名字由来是因为元素会慢慢“浮”到数列的顶端。1.比较相邻的元素。如果该元素比后一个元素大,就进行交换2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该是最大的数3.针对所有元素重复上述步骤,除了最后一个4.重复1-3,直到排序完成注:其实每一次循环都会有一个数排到对的位置,随原创 2022-02-24 19:47:58 · 3691 阅读 · 2 评论 -
爬楼梯-python
leetcode 的第70题 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例1:输入:n = 2输出:2解释:有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例2:输入:n = 3输出:3解释:有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶提示:1 <= n <= 45爬到楼顶从逆向思维来看,可原创 2022-02-10 21:08:02 · 3487 阅读 · 0 评论 -
两数之和-python
leetCode第1题 两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例2:输入:nums = [3,原创 2022-02-11 16:40:16 · 230 阅读 · 0 评论 -
合并两个有序数组-python
目录问题描述碰到的问题算法优化问题描述leetCode第88题 合并两个有序数组给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽原创 2022-02-11 20:08:16 · 1830 阅读 · 1 评论 -
移动零-python
leetCode第283题 移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。示例 1:输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]示例 2:‘输入: nums = [0]输出: [0]提示:1 <= nums.length <= 104-231 <= nums[i] <= 231 - 1进阶:你能尽量减少完成的操作原创 2022-02-12 16:12:26 · 1639 阅读 · 0 评论 -
找到所有数组中消失的数字-python
leetCode第448题 找到所有数组中消失的数字给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。示例 1:输入:nums = [4,3,2,7,8,2,3,1]输出:[5,6]示例 2:输入:nums = [1,1]输出:[2]提示:n == nums.length1 <= n <= 1051 <= nums[i] <=原创 2022-02-12 17:14:01 · 997 阅读 · 0 评论 -
合并两个有序链表-python
leetCode第21题 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和原创 2022-02-13 15:29:34 · 820 阅读 · 0 评论 -
删除排序链表中的重复元素-python
leetCode第83题,删除排序链表中的重复元素示例1:输入:head = [1,1,2]输出:[1,2]示例2:输入:head = [1,1,2,3,3]输出:[1,2,3]提示:链表中节点数目在范围 [0, 300] 内-100 <= Node.val <= 100题目数据保证链表已经按升序 排列题目已经说明了链表本身是升序的,那么前后最多只有重复的情况,而不会有后面比前面小的情况,那么只要将链表遍历,碰到前后相等的情况,直接把后一个元素删掉即可# p原创 2022-02-14 10:44:37 · 986 阅读 · 0 评论 -
环形链表-环形链表II-python
leetCode第141题 环形链表给你一个链表的头节点 head ,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。如果链表中存在环 ,则返回 true 。 否则,返回 false 。示例1:输入:head = [3,2,0,-4], pos = 1输出:true解原创 2022-02-14 11:53:34 · 199 阅读 · 0 评论 -
相交链表-python
leetCode第160题 相交链表链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。自定义评测:评测系统 的输入如下(你设计的程序 不适用 此原创 2022-02-14 20:21:30 · 284 阅读 · 0 评论 -
反转链表-python
leetCode第206题 反转链表。链接:https://leetcode-cn.com/problems/reverse-linked-list给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node原创 2022-02-15 21:45:32 · 852 阅读 · 0 评论 -
回文链表-python
leetCode第234题 回文链表链接:https://leetcode-cn.com/problems/palindrome-linked-list给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。示例 1:输入:head = [1,2,2,1]输出:true示例2:输入:head = [1,2]输出:false提示:链表中节点数目在范围[1, 105] 内0 <= Node.val <=原创 2022-02-16 11:48:06 · 822 阅读 · 0 评论 -
链表的中间结点-python
leetCode第876题 链表的中间结点链接:https://leetcode-cn.com/problems/middle-of-the-linked-list给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,原创 2022-02-16 20:29:05 · 505 阅读 · 0 评论 -
链表中倒数第k个节点-python
leetCode中剑指Offer第22题 链表中倒数第k个节点链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->原创 2022-02-16 21:19:38 · 373 阅读 · 0 评论 -
用栈实现队列-python
leetCode第232题 用栈实现队列链接:https://leetcode-cn.com/problems/implement-queue-using-stacks请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,原创 2022-02-16 22:28:35 · 603 阅读 · 0 评论 -
字符串解码-python
leetCode第394题 字符串解码链接:https://leetcode-cn.com/problems/decode-string给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出原创 2022-02-17 12:22:25 · 681 阅读 · 0 评论 -
二叉树的中序遍历-python
leetCode第94题 二叉树的中序遍历给定一个二叉树的根节点 root ,返回它的 中序 遍历。链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:原创 2022-02-18 17:15:38 · 1630 阅读 · 0 评论 -
二叉树的前序遍历-python
leetCode第144题 二叉树的前序遍历链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5原创 2022-02-18 17:34:58 · 1173 阅读 · 0 评论 -
二叉树的后序遍历-python
leetCode第145题 二叉树的后序遍历链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。示例 1:输入:root = [1,null,2,3]输出:[3,2,1]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]提示:树中节点的数目在范围 [0, 100] 内-100 <原创 2022-02-18 18:15:44 · 922 阅读 · 0 评论 -
对称二叉树-python
leetCode第101题 对称二叉树链接:https://leetcode-cn.com/problems/symmetric-tree给你一个二叉树的根节点 root , 检查它是否轴对称。示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:false提示:树中节点数目在范围 [1, 1000] 内-100 <= Node.val <= 100进阶:你可以原创 2022-02-19 13:50:43 · 1034 阅读 · 0 评论 -
平衡二叉树-python
leetCode第110题 平衡二叉树链接:https://leetcode-cn.com/problems/balanced-binary-tree给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false原创 2022-02-19 19:58:11 · 190 阅读 · 0 评论 -
翻转二叉树-python
leetCode第226题 翻转二叉树链接:https://leetcode-cn.com/problems/invert-binary-tree给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例 2:输入:root = [2,1,3]输出:[2,3,1]示例 3:输入:root = []输出:[]提示:树中节点数目范围在 [0, 100] 内-10原创 2022-02-19 20:24:45 · 2383 阅读 · 0 评论