自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 回顾前面刷过的算法(8)

最近几天回顾了一下一下几道算法题目。

2024-08-23 17:57:35 228

原创 回顾前面刷过的算法(7)

今天回顾了下一下几道算法题目。

2024-08-20 17:22:53 168

原创 回顾前面刷过的算法(6)

今天回顾一下这几道算法。

2024-08-19 17:55:56 224

原创 回顾前面刷过的算法(5)

今天看一下这几道题目。

2024-08-12 18:13:49 98

原创 回顾前面刷过的算法(4)

今天回顾一下下面三个算法,涉及到了动态规划、合并链表、位运算,好吧,让我们再次手敲一遍。

2024-08-05 17:36:03 178

原创 回顾前面刷过的算法(3)

今天简单描述了一下算法思路并手敲了一下下面三个算法,算法题目是刷不完的,但是解题思想是有限的,我们需要学习的就是解题思想,代码展示如下。

2024-08-02 16:43:54 186

原创 回顾前面刷过的算法(2)

发这类的博客只是是记录一下回顾算法的过程。

2024-08-01 16:15:21 211

原创 回顾前面刷过的算法(1)

之前刷了几十道简单的算法题,现在进行回顾,主要是为了巩固对每一道算法的理解,每次回顾都可能有新的收获,我回顾的方式主要就是再次理解一遍算法,然后重新手敲一遍,手敲是必须的,光看不写是没用的,记录展示如下。

2024-07-31 17:37:59 130

原创 定个小目标之刷LeetCode热题(46)

思路是,定义一个封装了node的Status对象,其实现Comparable接口,以升序排列所有入队的节点,首先将所有链表的头结点入队,然后一个节点一个节点的构造一个新链表,每出队一个节点后需要入队一个新的节点,代码如下。也是可以的,但是其时间复杂度会随着K的增大而增大,该方式的时间复杂度为。请你将所有链表合并到一个升序链表中,返回合并后的链表。给你一个链表数组,每个链表都已经按升序排列。今天看一下这道题,比较容易想到的就是。将它们合并到一个有序链表中得到。,其推导方式我就不讲了,这里介绍。

2024-07-24 14:46:05 206

原创 定个小目标之刷LeetCode热题(45)

遍历结束后不一定能得到最长有效括号的长度,因为如果输入的是“((((((()”时,此时如果从左向右遍历maxLength依旧为0,,两次不同方向遍历结束后就可以得到maxLength了,时间复杂度为O(n),空间复杂度为O(1),代码如下。有事会暂停更新,总之慢慢积累,今天看一下这道题,有。,思路就是分别定义两个计数器left和rigth,的字符串,找出最长有效(格式正确且连续)括号。最长有效括号子串是 "()"

2024-07-19 15:59:10 312

原创 定个小目标之刷LeetCode热题(44)

今天看一下这道题目,需要使用动态规划,定义dp[i]数组,dp[i]表示凑成总金额数为 i 至少需要dp[i]个硬币,要求解dp[i],那么dp[0]~dp[i - 1]都是已经求解出来的,转移方程如下。如果没有任何一种硬币组合能组成总金额,返回。其中 coins[j] <= i 的,代码如下。,表示不同面额的硬币;你可以认为每种硬币的数量是无限的。计算并返回可以凑成总金额所需的。

2024-07-10 14:18:15 282

原创 定个小目标之刷LeetCode热题(43)

今天看一下这道题目,之前的算法题目也需要不间断的复习,才能加深印象,本题使用动态规划思想,定义 f(o) 和 g(o),f(o) 表示选中当前节点时能盗取的最大金额,g(o) 表示不选中当前节点时能盗取的最大金额,则有以下递推关系式(l表示左子节点,r表示右子节点)之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为。,小偷能够盗取的最高金额。

2024-07-09 10:51:58 263

原创 定个小目标之刷LeetCode热题(42)

之前有做过前缀和的题目,假设我们要在一数组中寻找连续子数组和为 targetSum 的序列,那么我们可以用 map 记录前缀和 curr 以及出现的次数num,当 map 中存在 curr - targetSum 时说明存在连续子数组和为 targetSum 的序列,代码如下。不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。,求该二叉树里节点值之和等于。今天看这道题目,主要思想是。给定一个二叉树的根节点。

2024-07-08 15:01:27 253

原创 定个小目标之刷LeetCode热题(41)

今天看一下这道简单题,主要考查。,计算其二进制表示中 1。

2024-07-06 17:27:11 358

原创 定个小目标之刷LeetCode热题(40)

给定一个二叉树的根节点。

2024-07-05 17:16:20 195

原创 定个小目标之刷LeetCode热题(39)

请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。每次只能向下或者向右移动一步。类型,定义一个二维数组 dp,给定一个包含非负整数的。今天看这道题目,属于。

2024-07-04 14:11:28 232

原创 定个小目标之刷LeetCode热题(38)

(即逐层地,从左到右访问所有节点)。是一样的思路,直接上代码如下。

2024-07-03 14:29:26 120

原创 定个小目标之刷LeetCode热题(37)

按照这个规则遍历二叉树,然后把其存储在数组中,现在是反过来,给出已知先序遍历和中序遍历的两个数组,我们需要把这个二叉树构造出来,具体解题思路看代码。今天看这道题目,首先要先搞懂先序遍历和中序遍历的概念,我记得口诀是。,请构造二叉树并返回其根节点。

2024-07-02 14:31:39 153

原创 定个小目标之刷LeetCode热题(36)

广度遍历利用队列Queue实现,深度遍历利用递归实现,代码如下所示。是指从根节点到最远叶子节点的最长路径上的节点数。今天看这道二叉树遍历相关问题,分为。

2024-07-01 15:38:36 216

原创 定个小目标之刷LeetCode热题(35)

今天看这道题目,如果用现有的栈实现,那么基本可以满足题目要求,但是getMin()函数需要另外实现,可以使用一个辅助栈来实现,就是辅助栈用来记录每个入栈元素对应的最小值,在入栈或者出栈时同步更新辅助栈,代码如下。也可以不使用现有栈,使用链表也能大概实现基本功能,代码如下。操作,并能在常数时间内检索到最小元素的栈。

2024-07-01 15:02:14 363

原创 定个小目标之刷LeetCode热题(34)

通过k固定一个元素,然后两个i,j索引分别从数组两端向中间遍历寻找nums[k] + nums[i] + nums[j] = 0的三元组。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。答案中不可以包含重复的三元组。,判断是否存在三元组。今天看这道题目,思路是。

2024-06-29 16:33:06 328

原创 定个小目标之刷LeetCode热题(33)

今天看这道题目,要求实现时间复杂度为O(log n)第一想到的就是。请你找出给定目标值在数组中的开始位置和结束位置。给你一个按照非递减顺序排列的整数数组。了,二分查找有多种不同写法,我习惯。你必须设计并实现时间复杂度为。如果数组中不存在目标值。

2024-06-28 09:30:00 153

原创 定个小目标之刷LeetCode热题(32)

回溯对于本题来说就是每次操作完数组之后再将其复原。今天看这道题目,先说下思路,主要采用递归。给定一个不含重复数字的数组。

2024-06-27 14:17:52 210

原创 定个小目标之刷LeetCode热题(31)

之中任意元素的全部前缀元素和后缀的乘积都在。之外其余各元素的乘积。今天刷的是这道题,说下大概的思路,时间复杂度内完成此题。

2024-06-26 14:41:20 393

原创 定个小目标之刷LeetCode热题(30)

优化进行求解,简单说一下大概思路,首先遍历数组维护一个pre变量,表示前缀和,然后每次更新前缀和后把其作为key放到map中,value表示其出现的次数,要求某一段子数组的和该如何求解呢?假设pre8表示nums[0]~nums[8]的和,pre5表示nums[0]~nums[5]的和,那么pre8 - pre5表示的含义就是nums[6]~nums[8]的和,所以。,假设currentPre表示当前的前缀和,beforePre表示前面的前缀和,那么。子数组是数组中元素的连续非空序列。

2024-06-25 09:30:00 418

原创 定个小目标之刷LeetCode热题(29)

首先我们要搞清楚这个无序连续子数组的左右边界有什么特征,比如示例1中无序连续子数组是[6, 4, 8, 10, 9],仔细观察会发现6,4是降序,10,9也是降序,在一个升序数组中这都是异常的,由此可知这个。你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。今天刷的是这道题,一次遍历找出无序连续子数组的左右边界即可,简单说下思路。文字有点多,主要是为了加深自己的印象,代码如下。子数组,并输出它的长度。

2024-06-24 14:48:55 343

原创 定个小目标之刷LeetCode热题(28)

是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。最长递增子序列是 [2,3,7,101],因此长度为 4。,找到其中最长严格递增子序列的长度。,并记录其索引pos,然后。直接上代码如下,代码是使用。

2024-06-24 11:00:04 359

原创 定个小目标之刷LeetCode热题(27)

imax = MAX(imax * nums[i], nums[i]),由于本题数组元素范围是整数,即存在负数,最大可能变最小,最小可能变最大,所以除了维护一个max,还需要维护一个imin,imin = MIN(imin * nums[i], nums[i]),在遇到负数时,需要将imax和imin进行交换,画草图如下。这道题,我们可以使用动态规划,假设数组元素范围是>=0,那么递推关系式表示为。知道了思路,代码很容易就能敲出来,代码如下所示。

2024-06-22 15:59:12 360

原创 定个小目标之刷LeetCode热题(26)

这道题属于一道简单题,可以使用。

2024-06-21 21:02:14 229

原创 定个小目标之刷LeetCode热题(25)

【代码】定个小目标之刷LeetCode热题(25)

2024-06-20 19:33:07 303

原创 定个小目标之刷LeetCode热题(24)

主要利用在本题中会有这么一条规律,就是假设那个重复的数字是x,那么在[1,x - 1]里任意一个数y,满足小于等于y(包括本身)的元素个数count一定满足 count <= y,在[x, n - 1]里任意一个数y,满足小于等于y(包括本身)的元素个数count一定满足 count > y,这是因为在[x, n - 1]里多了个重复元素,我们可以使用二分法寻找那个x,代码如下。,把数组元素值当作索引,我们会发现如果有重复元素,那么会形成有环的链表, 如草图。

2024-06-19 09:30:00 219

原创 定个小目标之刷LeetCode热题(23)

通过cache.get(key)获取,如果存在则直接替换该结点的value并把该结点移动到链表头部,否则创建新的结点,把它put到chache中,然后添加到链表头部并且size++,最后判断size是否大于capacity,如果大于则需要移除链表尾部结点,并且需要移除cache中对应的结点,最后size--通过cache.get(key)获取,如果不存在则直接返回-1,否则返回对于key的value并把该结点移动到链表头部。今天写这道题,背过八股文的都应该知道。本题我们采用自己创建。

2024-06-18 10:39:06 419

原创 定个小目标之刷LeetCode热题(22)

这道题最容易想的就是排序后再遍历,但是时间复杂度就不是O(n)了,所以还是得用更优的解法,直接看题解,,文字描述了一遍,试着以这种思路编码,代码如下。

2024-06-17 10:47:17 306

原创 定个小目标之刷LeetCode热题(21)

计算下标的形式来将数组元素与数组索引产生映射关系,代码如下,可以看下注释。这是道技巧题,利用了。

2024-06-16 23:00:36 315 1

原创 定个小目标之刷LeetCode热题(20)

这题与上一题有一点不同,上一题是判断链表是否存在环,这题是寻找入环的第一个节点,有一个规则是这样的,

2024-06-15 11:00:00 494

原创 定个小目标之刷LeetCode热题(19)

这是道简单题,直接用快慢指针,代码如下。

2024-06-14 16:23:41 165 1

原创 定个小目标之刷LeetCode热题(18)

在之前有写过类似的一道题,见。

2024-06-13 09:30:00 176

原创 定个小目标之刷LeetCode热题(17)

这是道经典的动态规划问题,然而我还是无从下手,当看了题解之后才发现自己好像又懂了,哈哈,这应该就是菜鸟心理吧,递推关系式的推导过程可以去LeetCode看一下,这里我就不描述了。其中nums[k - 1]是输入的数组,f(k)表示偷前k - 1个房屋能偷得的最大金额,那么用代码描述一下。我们都知道大部分动态规划在空间上都是可以优化的,比如本题,我们只想得到dp[len]的值,在递推结束后。,直接看代码,注释有写优化过程。

2024-06-12 10:57:08 179

原创 定个小目标之刷LeetCode热题(16)

重复上述步骤直到把链表都拆分完,这样这条链表每段长度为2的子链表都是有序的,那么要整条链表有序,我们只需要把subLength扩大并重复上述排序步骤即可,也就是每次拆分排序完。后再次进行拆分排序,直到subLength大于或者等于整条链表的长度,画草图如下所示。代码如下,每行都有解释。

2024-06-11 10:56:49 402 1

原创 定个小目标之刷LeetCode热题(15)

这道题直接就采用两数相加的规则,维护一个进阶值(n)即可,代码如下。

2024-06-10 22:49:57 285 1

您的资源审核通过后,将在文章顶部展示

您的资源审核通过后,将在文章顶部展示

2024-06-24

音乐播放器素材.zip

音乐播放器素材,有的是没用到

2021-11-09

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除