![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode刷题
文章平均质量分 94
一只AI学习小朋友
这个作者很懒,什么都没留下…
展开
-
Leetcode 刷题第30天 | 51,37
具体可执行代码如下。每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。如果当前board[i][j]是非数字,range(1, 10) 遍历,填空,此时要判断所填数字是否有效。n 皇后问题 研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。当行和列都遍历结束,如果没有返回False,则返回True。如果遍历完10个数字,都是有冲突的,返回False。给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。原创 2023-09-24 15:18:25 · 56 阅读 · 0 评论 -
Leetcode 刷题第29天 |491,46,47
输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6,7,7],[7,7]]题目中要求的是返回所有的可能得情况,并且for循环似不能解决问题,所以采用回溯这种暴力搜索方法。输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]本题可以有重复数字。输出:[[1,1,2], [1,2,1], [2,1,1]]原创 2023-09-21 11:40:09 · 62 阅读 · 0 评论 -
Leetcode 刷题第27天 | 78,90
肯定不是同一个位置上的2,那么这两个2分别是第一个位置上的2和第二个位置上的2,所以这样的情况是不重复的。首先要明确的是,本题与之前采用回溯算法的本质不同是,符合要求的答案在每个节点上,而之前的问题符合要求的答案在叶子节点上,这一点是明显的不同,但是总体思路和收集节点的方式是相同的。给你一个整数数组 nums ,数组中的元素 互不相同。输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]原创 2023-09-19 19:38:45 · 53 阅读 · 0 评论 -
Leetcode 刷题第26天 | 131,93
例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。输出:[“1.0.10.23”,“1.0.102.3”,“10.1.0.23”,“10.10.2.3”,“101.0.2.3”]输出:[“255.255.11.135”,“255.255.111.35”]输出:[[“a”,“a”,“b”],[“aa”,“b”]]输入:s = “a”输出:[[“a”]]原创 2023-09-18 21:06:52 · 44 阅读 · 0 评论 -
Leetcode 刷题第25天 |40
与组合总和:解集中元素可重复,不限制元素个数。如果从1开始,那么必然要包含重复元素。给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。输入: candidates = [10,1,2,7,6,1,5], target = 8,输入: candidates = [2,5,2,1,2], target = 5,首先要明确本题与组合总和 和 组合总和3的差别。与组合总和3:解集中无重复元素,限制元素个数。原创 2023-09-18 07:57:07 · 39 阅读 · 0 评论 -
Leetcode 刷题第24天 |77,216,17
回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。回溯是一种暴力搜索法,并不高效。虽然可以通过剪枝优化算法,但是并不能改变回溯算法的本质。为什么回溯算法并不高效,为什么还必须要使用呢?因为没得选,简单的for循环不足以解决问题,泛化性很弱。仔细想一下,在二叉树中,递归法解决问题,肯定都有回溯,只不过有时候回溯被隐藏起来了。所以,所有的回溯算法是不是都可以抽象成树形结构。只不过不一定是二叉树,可能是多叉树。原创 2023-09-16 11:29:48 · 27 阅读 · 0 评论 -
Leetcode 刷题第22天 | 235, 701
输入:root = [4,2,7,1,3,null,null,null,null,null,null], val = 5。输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8。输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4。例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]输入:root = [4,2,7,1,3], val = 5。原创 2023-09-14 22:39:39 · 25 阅读 · 0 评论 -
Leetcode 刷题第21天 |98,530,501
什么是二叉搜索树?简单说:根节点大于左子树上的任何值;小于右子树上的任何值。子树同样满足这样的定义。原创 2023-09-13 21:32:11 · 20 阅读 · 0 评论 -
Leetcode 刷题第18天 | 654,617,700
合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。递归结束条件:当当前数组没有元素时,说明遍历到空节点,返回None,当当前数组只有一个元素时,返回当前节点构成的二叉树。输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]输出:[6,3,5,null,2,0,null,null,1]输入:nums = [3,2,1,6,0,5]输出:[3,4,5,5,4,null,7]原创 2023-09-09 19:46:19 · 27 阅读 · 0 评论 -
Leetcode 刷题第17天 | 513,112,106
第一,判断后序遍历是否为空(题目中给出postorder和inorder符合后序和中序的条件,因此不用过多的条件判断),如果为空,直接返回None,返回值哪里接?输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22。输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]输入: [1,2,3,4,null,5,6,null,null,7]输入: root = [2,1,3]原创 2023-09-08 20:42:50 · 27 阅读 · 0 评论 -
Leetcode 刷题第16天 |257,404
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24。输入: root = [3,9,20,null,null,15,7]给定二叉树的根节点 root ,返回所有左叶子之和。输入:root = [1,2,3,null,5]输出:[“1->2->5”,“1->3”]叶子节点 是指没有子节点的节点。输入: root = [1]输入:root = [1]原创 2023-09-07 21:13:47 · 31 阅读 · 0 评论 -
Leetcode 刷题第15天 |222,110
具体来说,递归遍历左子树的高度,递归遍历右子树的高度,作差,如果绝对值大于1,说明不是平衡二叉树,否则是平衡二叉树。但不同的地方在于,在求最大深度的题目中,每次的返回是当前节点的最大深度,而在本题中,返回值前要判断左右子树的高度差是否大于1,如果大于1,返回-1表示非平衡二叉树;思想:从题目中得知,输入数据会保证是完全二叉树,那么分别从左右两侧遍历到叶子结点,如果深度相同,那就是完全二叉树,否则继续递归到子节点,继续判断,以此类推。输入:root = [1,2,2,3,3,null,null,4,4]原创 2023-09-06 20:12:32 · 26 阅读 · 0 评论 -
Leetcode 刷题第14天 |226,101,104,111
经过思考可以知道,前序遍历和后序遍历都是在“边界”上访问根节点,访问根节点就是我们要处理的逻辑。这时要交换左右子树,交换后再遍历右子树,这时可以发现,有的子树被遍历两次,而有的子树却没有被遍历过。对于层次遍历,每次出栈节点都交换左右子树,交换完毕后再入栈左右孩子节点,这样并不会产生类似中序遍历的问题。首先要明确使用哪种遍历方式,前序遍历为“中左右”,后序遍历为“左右中”,中序遍历为“左中右”,层次遍历是逐层遍历。输入:root = [2,null,3,null,4,null,5,null,6]原创 2023-09-05 15:57:17 · 36 阅读 · 0 评论 -
Leetcode 刷题第13天 |144, 145, 94
对于二叉树,无疑是Leetcode 刷题最难的部分之一,对小编也是如此,从今天开始学习或复习二叉树。对于二叉树,我们要了解一下几个方面知识:一、二叉树种类二、 二叉树的存储方式三、 二叉树的遍历方式。原创 2023-09-04 17:12:03 · 59 阅读 · 0 评论 -
Leetcode 刷题第10天 |20, 150, 1047,239
利用栈,队列模拟解决Leetcode 问题原创 2023-09-01 15:41:45 · 33 阅读 · 0 评论 -
Leetcode 刷题第九天 | 225,232
你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你所使用的语言也许不支持队列。你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。使用python 双端队列deque模拟栈的行为,重要的是用一个双端队列模拟栈的行为。原创 2023-08-31 14:38:07 · 29 阅读 · 0 评论 -
Leetcode 刷题第七天 |344,541, 151
Leetcode 344.反转字符串,541.反转字符串II,151.翻转字符串里的单词Leetcode 344题目编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。示例 1:输入:s = [“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]输出:[原创 2023-08-29 16:00:23 · 49 阅读 · 0 评论 -
Leetcode 刷题第六天 |15,454,18
输入:nums1 = [1,2], nums2 = [-2,-1], nums3 = [-1,2], nums4 = [0,2]输入:nums1 = [0], nums2 = [0], nums3 = [0], nums4 = [0]输出:[[-2,-1,1,2],[-2,0,0,2],[-1,0,0,1]]输入:nums = [1,0,-1,0,-2,2], target = 0。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输出:[[-1,-1,2],[-1,0,1]]原创 2023-08-28 11:19:46 · 28 阅读 · 0 评论 -
Leetcode 刷题第五天 | 242,349,1
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输入:nums1 = [1,2,2,1], nums2 = [2,2]输入:nums1 = [1,2,2,1], nums2 = [2,2]输入: nums = [3,2,4], target = 6。原创 2023-08-27 15:33:16 · 53 阅读 · 0 评论 -
Leetcode 刷题第四天 | 24,19,142
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]提示:python 代码:复杂度:时间复杂度:O(n)O(n)O(n),因为要循环遍历整个列表空间复杂度:O(1)O(1)O(1)给你一个链表,删除链表的倒数第 n 个结点,并且返回链表原创 2023-08-26 10:59:13 · 38 阅读 · 0 评论 -
Leetcode刷题第三天 | 203,707,206
给你一个链表的头节点 head 和一个整数val ,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]不带头指针实现:带头指针实现:复杂度:时间复杂度:O(n)O(n)O(n),因为要循环遍历整个列表空间原创 2023-08-25 17:17:28 · 36 阅读 · 0 评论 -
Leetcode刷题第二天 | Leetcode 977,209,59
使用条件:有序数组,查找操作。原创 2023-08-24 21:45:47 · 54 阅读 · 0 评论 -
Leetcode 刷题第一天 | Leetcode 704 二分查找和Leetcode 27 移除元素
示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。更简单的解法需要对数组进一步理解:数组在内存中是连续存在的,不能随意删除,只能覆盖。就是新数组中的元素的个数,最终会指向所有元素的下一个位置,也就是返回值就是新数组中元素的个数。原创 2023-08-23 16:39:36 · 92 阅读 · 0 评论