![](https://img-blog.csdnimg.cn/aba5e4e381d1478aa0ec6458cd796aaf.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode刷题
文章平均质量分 53
本专栏主要为在力扣上刷的题目。
坚持不懈的大白
liuze,研一学生,熟悉C、Python、Java、HTML等编程语言,自学过Spring Boot、Python爬虫、Vue.js、React、MySQL、MongoDB...
展开
-
LeetCode:1402. 做菜顺序、2316. 统计无向图中无法互相到达点对数
从0号节点依次遍历到n-1号节点,如果遍历到某节点时,在map中已经存在了,那么不需要再进行接下来的操作,否则,在map中记录当前节点,然后依次遍历与该节点连通的节点,继续上述操作,直到遍历完某节点所有连通的节点,此时map中存储的节点个数减去pre(初始为0),即可得到一组不为0数,用一个数组arr存储,直到所有节点全部遍历完,然后计算arr中的数即可得到最终结果。输入:n = 7, edges = [[0,2],[0,5],[2,4],[1,6],[5,4]]每道菜都需要花费 1 单位时间完成。原创 2023-10-23 12:09:31 · 2265 阅读 · 1 评论 -
Leetcode刷题:395. 至少有 K 个重复字符的最长子串、823. 带因子的二叉树
首先arr中每个元素单独组成二叉树是满足题目要求,现在考虑多个元素组合情况,根节点和其左右节点值满足条件:root.val = root.left.val*root.right.val,其左、右节点如果还有子节点,那么也应该满足上述等式,为此,需要对原arr进行升序排序,然后依次遍历arr中每个元素,用map来记录arr中每一个元素满足上述等式次数。解释: 可以得到这些二叉树: [2], [4], [5], [10], [4, 2, 2], [10, 2, 5], [10, 5, 2].原创 2023-08-29 07:38:30 · 664 阅读 · 1 评论 -
leetcode 面试题 02.04. 分割链表
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有。指针后面(并修改p指针的指向);否则,这里分为两种情况,初始化指针。输入:head = [1,4,3,2,5,2], x = 3。思路:没有在原链表上进行修改,而是新建一个链表。指向当前新连入的节点;否则把当前节点连接在。最后这个遍历完成之后,返回。为NULL,那么直接把当前节点连接在。每个分区中各节点的初始相对位置。输出:[1,2,2,4,3,5],如果head中某个节点值。,那么将这个节点连接在。原创 2023-04-29 16:45:29 · 865 阅读 · 0 评论 -
leetcode 1721. 交换链表中的节点
可以考虑使用两次遍历,第一次遍历找到第一个交换节点,同时也统计出链表的节点个数,第二次遍历利用链表的节点个数得到第二个交换节点,最后交换两个节点的值即可。具体思路为:初始化first指针为NULL,last指针指向head链表,遍历原链表的节点,只要当前节点数小于或者等于k,first=当前的节点;链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表。输入:head = [1,2,3,4,5], k = 2。输出:[1,4,3,2,5]原创 2023-04-28 16:38:13 · 73 阅读 · 0 评论 -
leetcode-328 奇偶链表
题目如下:给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。你必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。原创 2023-04-27 09:18:14 · 505 阅读 · 0 评论 -
leetcode:61. 旋转链表
因为链表中节点的个数是0~ 500,而k的取值范围为0~2*10^9,所以需要用k对节点个数进行取余操作,用于去除其中的重复操作。另外,需要获取到链表中两个特殊位置的指针,其中一个指向链表的尾部(q指针);另外一个指针指向链表中第length-k的位置(length为链表的长度,从头指针开始算起),如上述题目示例,length=5,k=2,length-k=3,也就是链表的第3位置,对应节点值为3的节点(pre指针)。输入:head = [1,2,3,4,5], k = 2。输出:[4,5,1,2,3]原创 2023-04-26 09:05:38 · 199 阅读 · 0 评论 -
leetcode-1041. 困于环中的机器人
思路:根据题目要求,其实就是求机器人在经过有限次一样的指令变化下能回到初始点(0,0)吗?仔细琢磨可以发现,机器人要想回到初始点(0,0),要么经过第一次指令变化之后就已经回到初始点[1],要么经过两次一样的指令变化之后回到初始点[2],要么经过四次一样的指令变化之后回到初始点[3]。其他情况下(不考虑重复回到初始点的情况),机器人无论如何都无法回到初始点(0,0).在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。机器人按顺序执行指令 instructions,并一直重复它们。原创 2023-04-11 11:23:31 · 404 阅读 · 0 评论 -
leetcode-12:1664. 生成平衡数组的方案数
思路:虽然这题给出的题目标签为动态规划,但是小编一看到这个题目就想到运用数学知识解决这个问题。如果一开始我们先将题目给出的数组的偶数下标元素的和与奇数下标元素的和之差计算出来(小编代码中用。给你一个整数数组 nums。你需要选择 恰好 一个下标(下标从 0 开始)并删除对应的元素。请注意剩下元素的下标可能会因为删除操作而发生改变。如果一个数组满足奇数下标元素的和与偶数下标元素的和相等,该数组就是一个 平衡数组。请你返回删除操作后,剩下的数组 nums 是 平衡数组 的 方案数。描述可能不是很清楚哈!原创 2023-01-28 12:12:48 · 194 阅读 · 0 评论 -
leetcode-11:1814. 统计一个数组中好对子的数目
leetcode上 1814. 统计一个数组中好对子的数目原创 2023-01-18 17:14:22 · 490 阅读 · 1 评论 -
leetcode-10:还原排列的最少操作步数
leetcode上2023年1月9号的题目,小编提供了暴力解法和运用数学知识的解法。原创 2023-01-09 12:32:08 · 333 阅读 · 0 评论 -
数据结构(C语言版)严蔚敏->顺序栈的定义、利用顺序栈解决有效的括号
1. 利用栈解决有效的括号问题有效的括号题目来自leetcode,链接为:有效的括号,题目难度简单。思路,首先判断当前栈是否为空,如果为空,则将当前字符入栈;如果栈不为空,则得到栈顶字符元素,将得到的栈顶字符元素与当前字符进行有效括号比较,不过不满足有效括号,则将当前栈入栈,否则将当前栈顶字符元素出栈,以此类推即可,最后判断栈是否为空,为空则字符串有效,否则无效。...原创 2022-07-04 13:40:11 · 1006 阅读 · 1 评论 -
LeetCode9:二倍数对数组
原题为:给定一个长度为偶数的整数数组 arr,只有对 arr 进行重组后可以满足 “对于每个 0 <= i < len(arr) / 2,都有 arr[2 * i + 1] = 2 * arr[2 * i]” 时,返回 true;否则,返回 false。示例 1:输入:arr = [3,1,3,6]输出:false示例 2:输入:arr = [2,1,2,6]输出:false示例 3:输入:arr = [4,-2,2,-4]输出:true解释:可以用 [-2,-4] 和 .原创 2022-04-01 10:53:49 · 392 阅读 · 0 评论 -
LeetCode-8:根据二叉树创建字符串
原题如下:你需要采用前序遍历的方式,将一个二叉树转换成一个由括号和整数组成的字符串。空节点则用一对空括号 “()” 表示。而且你需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。示例 1:输入: 二叉树: [1,2,3,4]1/ \2 3/4输出: “1(2(4))(3)”解释: 原本将是“1(2(4)())(3())”,在你省略所有不必要的空括号对之后,它将是“1(2(4))(3)”。示例 2:输入: 二叉树: [1,2,3,null,4.原创 2022-03-19 22:21:25 · 194 阅读 · 0 评论 -
LeetCode-7:使数组变成交替数组的最少操作数
原题为:解题思路:小编觉得这样应该可以通过测试,用两个字典分别统计原列表下标偶索引和奇索引对应的值的个数,然后遍历这两个字典,分别找到两个字典中值最大的键(当然最后两个键的值不能相等),最后再遍历一次列表,分别对比,如果与列表中的值不相等,那么意味着操作数+1。参考代码:class Solution(object): def minimumOperations(self, nums): """ :type nums: List[int] .原创 2022-03-11 20:19:37 · 387 阅读 · 1 评论 -
LeetCode-6:接雨水
原题为:参考代码为:class Solution(object): def trap(self, height): """ :type height: List[int] :rtype: int """ n = len(height) dp = [0] * n left = 0 right = n - 1 max_v = height[0] .原创 2022-03-10 22:39:44 · 185 阅读 · 0 评论 -
LeetCode-5:蜡烛之间的盘子
原题为:参考代码为:class Solution(object): def platesBetweenCandles(self, s, queries): """ :type s: str :type queries: List[List[int]] :rtype: List[int] """ n = len(s) list_1 = [0] * n list_2 .原创 2022-03-08 22:58:33 · 7234 阅读 · 1 评论 -
LeetCode-3:七进制数
原题为:参考代码如下:class Solution(object): def convertToBase7(self, num): """ :type num: int :rtype: str """ i = 0 f = 1 if num>=0 else -1 num = abs(num) while 7**i <= num: .原创 2022-03-07 10:14:28 · 95 阅读 · 0 评论 -
LeetCode刷题-2: Z 字形变换
原题目如下:将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入:s = “PAYPALISHIRING”, numRows = 3输出:.原创 2022-03-01 20:28:58 · 765 阅读 · 0 评论 -
leetcode刷题:打家劫舍
原题如下:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:[2原创 2021-12-31 10:27:56 · 153 阅读 · 0 评论 -
递归求解:用0到9生成十位数的所有排列组合
用 0到9 生成 十位数的所有排列组合,数字0不能在第一个,这个生成的十位数,不能有重复的数字。class java_234859 { public static void main(String[] args) { String str[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" }; permutation(str, 0, str.length); } static void swap(St.原创 2021-11-15 11:37:37 · 977 阅读 · 3 评论