自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(320)
  • 收藏
  • 关注

原创 力扣每日一题2022-09-30中等题:零矩阵

记录矩阵中的0出现的横纵坐标,然后按横纵坐标修改矩阵中的值即可。

2022-09-30 14:19:06 584 1

原创 力扣每日一题2022-09-29简单题:字符串轮转

如果s1和s2的长度不同,无论怎么轮转s1都不能得到s2,返回false。在长度一样(长度为n)的前提下,假定s1轮转i位,则s2中的某一位字符s2[j]对应的原s1中的字符应该为s1[(i+j) mod n]。在固定i的情况下,遍历所有j,若对应字符都相同,则返回true。否则继续遍历其他i,若所有的i都不能使s1变为s2,则返回false。

2022-09-29 16:13:45 556

原创 力扣每日一题2022-09-28中等题:第K个数

可以使用最小堆实现。初始时,堆为空,首先将最小的数1加入堆。每次取出堆顶元素x,则x是堆中最小的数,由于3x、5x、7x也是符合要求的数,因此将3x、5x、7x加入堆。由于这个过程中会出现重复元素,所以可以使用集合去重,避免相同元素多次加入堆。在排除重复元素的情况下,第k次从最小堆中取出的数就是第k个数。根据题意,其实就是计算1、3、5、7以及他们的倍数的从小到大排序的第k个数。

2022-09-28 17:40:09 361

原创 力扣每日一题2022-09-23中等题:设计链表

实现addAtIndex(index, val)时,如果index是有效值,则需要找到原来下标为index的节点的直接前驱结点pred,并创建新节点cur,将cur的直接后继节点设为pred的直接后继节点,将pred的直接后继节点设为cur,更新size,这样的操作对于index=0也成立。然后找到下标为index的节点的直接前驱节点pred,通过将pred的直接后继节点更新为pred的直接后继节点的直接后继节点,来大城删除节点的效果,同时更新size。根据题意,可以选择单链表和双链表解题,先使用单链表。

2022-09-23 14:37:23 553

原创 力扣每日一题2022-09-22简单题:能否连接形成数组

不断将pieces中的数组与数组arr相对应,对于当前遍历的元素arr[i],如果不存在哈希表中,说明无法将pieces与数组arr相对应,直接返回false;否则我们找到对应的数组pieces[j],然后将它与arr[i]及之后的整数进行比较,比较过程中,如果判断相等不成立,则返回false,判断都相等后,将i相应地向后移。因为arr每个整数互不相同,且pieces的整数也互不相同,所以可以通过arr固定pieces的位置,使用哈希表记录pieces各个数组的首元素与数组下标的对应关系。

2022-09-22 15:03:14 362

原创 力扣每日一题2022-09-20中等题:划分为k个相等的子集

又因为n满足1

2022-09-20 11:55:24 375

原创 力扣每日一题2022-09-19简单题:按照频率将数组升序排序

根据题意,先算出nums中元素的频率,然后按照元素频率和数值进行排序即可。

2022-09-19 11:27:16 196

原创 力扣每日一题2022-09-14简单题:删除某些元素后的数组均值

设元素数目为n,先对数组进行从小到大排序,然后对区间[n/20,19n/20)内的元素进行求和,得到未删除的元素的和,返回均值。

2022-09-14 15:12:17 284

原创 力扣每日一题2022-09-13中等题:最大交换

因为对整数num的十进制数字位最长为8位,任意两个数字交换一次最多有28种不同的交换方法,因此可以尝试遍历所有可能的数字交换方法即可,并找到交换后的最大数字即可。

2022-09-13 13:14:41 320

原创 力扣每日一题2022-09-12简单题:特殊数组的特征值

将数组nums降序排序,就可以通过遍历的方式得到数组的特征值。根据题意,x一定是在[1, n]范围内的整数,n为数组nums的长度。因此,可以遍历[1, n]判断某个整数i是否为特征值。若i为特征值,则nums中恰好有i个元素大于等于i。因为数组经过降序排序,则说明nums[i-1]必须大于等于i,并且nums[i]必须小于i。

2022-09-12 17:47:56 556

原创 力扣每日一题2022-09-09简单题:文件夹操作日志搜集器

【代码】力扣每日一题2022-09-09简单题:文件夹操作日志搜集器。

2022-09-09 15:10:21 346

原创 力扣每日一题2022-09-08中等题:优美的排列II

由此可以推出,列表的前半部分相邻差均为1,后半部分的相邻差从k开始逐渐递减到1,这样1到k的差值均出现依次,对应的列表为:[1, 2,…, n-k, n, n-k+1, n-1, n-k+2,…当k=n-1时,将1-n按照[1, n, 2, n-1,…]的顺序排列,相邻的差此部分n-1开始,依次递减。所以1到n-1的差值均出现一次,满足k=n-1的条件。当k=1时,将1-n按照[1, 2,…, n]的顺序排列,相邻的差均为1,满足k=1的条件。

2022-09-08 17:47:06 355

原创 力扣每日一题2022-09-07简单题:重新排列单词间的空格

题目给定字符串text,按照空格分割,得到单词集合,并统计空格数。

2022-09-07 18:01:51 198

原创 力扣每日一题2022-09-06困难题:统计子串中的唯一字符

当它在某个子字符串中仅出现一次时,会对这个子字符串统计唯一字符时有贡献。只需对每个字符,计算有多少子字符串仅包含该字符一次即可。可以预处理s,将相同字符的下标放入数组中,方便计算。最后对所有字符进行这种计算即可。,记同字符上次出现的位置为。种,即子字符串的起始位置有。,那么这样的子字符串共有。种可能,到结束位置有。

2022-09-06 14:14:48 264

原创 力扣每日一题2022-09-05中等题:寻找重复的子树

将每一棵子树都序列化称一个字符串,并保证相同的子树会被序列化成相同的子串、不同的子树会被序列化成不同的子串。只要使用一个哈希表存储所有子树的序列化结果,如果某个结果出现超过一次,就能发现一类重复子树。序列化二叉树的方法可以使用层次遍历,也可以使用递归进行序列化。这里使用深度优先搜索的方法递归序列化二叉树并存入哈希表,遍历时遇到重复的子树序列化结果就可以加入结果数组中。

2022-09-05 19:42:43 383

原创 力扣每日一题2022-09-04简单题:二进制矩阵中的特殊位置

根据题意,模拟即可。

2022-09-04 13:39:33 252

原创 力扣每日一题2022-09-03中等题:最长数对链

设dp[i]为以pairs[i]为结尾的最长数对链的长度。计算dp[i]时,可以先找出所有的满足pairs[i][0]>pairs[j][1]的j,并求出最大的dp[j],dp[i]的值即可赋为这个最大值+1.这种动态规划的思路要求计算dp[i]时,所有潜在的dp[j]已经计算完成,可以先将pairs进行排序来满足要求。挑选最长数对链的第一个数对时,最优的选择是挑选第二个数字最小的, 挑选完第一个数对后,再从剩下的数对中选择一个第一个数字满足题意的最小的第二个数字的数对。如此循环直至找不到下一个数对为止。

2022-09-03 16:20:07 299

原创 力扣每日一题2022-09-01简单题:商品折扣后的最终价格

根据题意,模拟即可。

2022-09-01 11:09:55 329

原创 力扣每日一题2022-08-31中等题:验证栈序列

【代码】力扣每日一题2022-08-31中等题:验证栈序列。

2022-08-31 17:48:08 409

原创 力扣每日一题2022-08-30中等题:最大二叉树II

如果根节点的值小于给定的整数val,则新的树会以val为根节点,并将原来的树作为新的根节点的左子树。然后,从根结点开始不断地向右子结点进行遍历。当遍历到结点cur和其父结点parent,并且cur结点的值小于val时,可以停止遍历,构造一个新的结点,以val为值且以cur为左子树,将该结点作为parent的新的右节点,并返回根结点即可。如果遍历完成,仍未找到比val值小的结点,则构造一个新的结点以val为值,将该结点作为parent的右节点并返回根结点即可。...

2022-08-30 21:22:28 132

原创 力扣每日一题2022-08-29简单题:重新排列数组

用ans表示结果数组,数组nums和ans的长度都是2n。

2022-08-29 17:02:53 392

原创 力扣每日一题2022-08-26简单题:数组中两元素的最大乘积

因为要使得(nums[i]-1)*(nums[j]-1)最大,就要使nums[i]和nums[j]为数组的最大值和次大值,所以可以通过排序找出两个最大的元素即可。

2022-08-26 07:59:06 420

原创 力扣每日一题2022-08-25中等题:分割数组为连续子序列

left和right指向的元素都是各自部分最接近x的元素,可以比较left和right指向的元素获取整体最接近x的元素,如果x-arr[lef]

2022-08-25 14:41:53 468

原创 力扣每日一题2022-08-24简单题:通过翻转子数组使两个数组相等

如果arr长度大于1,只需要满足arr和target的元素相同,arr就能通过若干次操作变为target。这主要是因为通过一次或两次翻转操作,必然可以交换arr数组中的任意两个元素的位置并且保持其他元素的位置不变。如果交换非相邻的两个元素,则翻转这两个元素及两个元素之间所有元素,之后在翻转两个元素之间的所有元素,即可实现翻转两个元素,其他元素位置不变。思路与哈希表类似,只不过哈希表是对数组进行统计,排序是对数组进行从大到小排序后看看两个数组是否相等,如果相等,就说明可以通过翻转得到。

2022-08-24 10:41:58 415

原创 力扣每日一题2022-08-22中等题:输出二叉树

首先使用深度优先搜索得到二叉树的高度height(本题中树的高度从0开始算,我不知道是不是我记错了我学习树的时候应该树的高度是从1开始计算的),然后创建一个行数为m=height+1列数为n=2^(height+1)-1的结果矩阵ans放置结点值。根据题意,根结点应放在第一行正中间,根结点所在的行和列会将剩余空间划分为两部分(左下和右下),然后递归地将左子树和右子树分别输出在左下和右下两部分空间。

2022-08-22 11:28:23 366

原创 力扣每日一题2022-08-21简单题:检查单词是否为句中其他单词的前缀

使用start记录单词的起始,end记录单词结尾的下一个位置。遍历字符串sentence并不断地分割单词,对于区间[start, end)对应的单词,判断是否存在某一前缀等于searchWord,如果存在直接返回该单词对应的下标index,如果遍历完所有单词都不符合条件,返回-1。

2022-08-21 10:40:10 200

原创 力扣每日一题2022-08-20中等题:最大二叉树

用递归函数dfs(nums, left, right)表示对数组nums中从nums[left]到nums[right]的元素构建一棵树。

2022-08-20 09:20:09 77

原创 力扣每日一题2022-08-19简单题:在既定时间做作业的学生人数

根据题意要找到queryTime正在做作业的学生人数,结合题目给定的数据规模最简单直接的思路就是枚举每个学生做作业的时间范围是不是包含了queryTime,如果第i名学生满足startTime[i]

2022-08-19 08:48:56 391

原创 力扣每日一题2022-08-16简单题:设计有序流

对于String[] insert(int id, String value),直接根据题意模拟即可。将stream[id]置为value,如果stream[id]不为空,就将其加入答案,并将ptr+1,知道指针超出边界或stream[id]为空时结束并返回答案。对于OrderedStream(int n),在初始化时创建一个长度为k+1的数组stream,用来存储后续的字符串。由于指针ptr的初始值为1,数组下标是从0开始的,所以使用长度n+1的数组可以使编码更方便。...

2022-08-16 09:58:11 76

原创 力扣每日一题2022-08-15中等题:设计循环双端队列

可以利用循环队列实现双端队列,在循环队列的基础上,增加insertFront和deleteFront函数实现即可。队列具备如下几个属性:front(队首索引)、rear(队尾索引)、elements(一个固定大小的数组)、capacity(循环队列的容量)。...

2022-08-15 16:53:34 559

原创 力扣每日一题2022-07-01中等题:为运算表达式设计优先级

为运算表达式设计优先级对expression进行预处理,把所有数字和运算符放入数组ops中,因为题目数据满足每个数字都在[0, 99]这个范围内,且运算符总共有三个,分别用-1,-2,-3分别表示+、-、*。因为对于表达式中某一个运算符op,将其左边可能的计算结果用left表示,右边的可能的计算结果用right表示。则以该运算符为该表达式的最后一步运算的情况的全部可能结果就是对应left和right中的元素对应该运算符操作的组合数。枚举表达式中全部运算符来作为left和right的分隔符来求得对应的集合,则

2022-07-01 13:50:01 161

原创 力扣每日一题2022-06-30简单题:质数排列

质数排列根据题意,要求符合要求的方案数,需要所有质数都放在质数索引上,所有合数放在合数索引上,质数放置和合数放置是相互独立的,所以总方案数为所有质数都放在质数索引上的方案数*所有合数都放在合数索引上的方案数。求所有质数都放在质数索引上的方案数,就是求指数个数的阶乘。求所有合数都放在合数索引上的方案数同理。求质数个数时,可以用试除法。...

2022-06-30 16:07:36 435

原创 力扣每日一题2022-06-29中等题:TinyURL的加密与解密

TinyURL的加密与解密根据题意,主要考察的是使用哈希表存储原url和新url的键值对关系,至于加密解密使用什么算法并没有要求。

2022-06-29 15:19:50 320

原创 力扣每日一题2022-06-28中等题:摆动排序II

摆动排序II根据题意要求的新数组元素大小关系可知,将数组从小到大排序后,令x=⌊n+12⌋x=\lfloor\frac{n+1}{2}\rfloorx=⌊2n+1​⌋,其中n为数组元素个数,必有nums[0]

2022-06-29 13:38:18 113

原创 力扣每日一题2022-06-27中等题:最长特殊序列II

最长特殊序列II对于给定的某个字符串str[i],如果它的一个子序列sub是特殊序列,那么str[i]也是一个特殊序列。所以只需要做一个双重循环,外层枚举每一个字符串str[i]作为特殊序列,内层枚举每一个字符串str[j],满足i≠j,判断str[i]是否不为str[j]的子序列即可。判断是否是子序列可以通过贪心+双指针求解。初始时,两个指针p1,p2分别指向两个字符串的首字符,如果字符相同,则两个指针都向右移动一个位置表示匹配成功;否则只移动p2,表示匹配失败。如果p1遍历完整个str[i],则str

2022-06-27 16:16:23 173

原创 力扣每日一题2022-06-21简单题:IP地址无效化

IP地址无效化遍历IP地址,遇到’.‘就替换为’[.]'即可。

2022-06-21 10:19:17 360

原创 力扣每日一题2022-06-18中等题:排序的循环链表

排序的循环链表如果循环链表为空,则插入一个新节点,并将新节点的next指针指向自身,插入新节点后得到只有一个节点的循环链表,该循环链表是有序的,将插入的新节点作为新的头节点返回。如果循环链表的头节点的next指针指向自身,则链表中只有一个结点,在头节点后插入新节点,将头节点的next指针指向新节点,新节点的next指针指向头节点,此时链表有两个节点且有序,返回头节点。如果循环链表中的节点数大于1,需要从头遍历循环链表,寻找插入新节点的位置,使得新插入节点后链表仍有序。可以使用cur和next指针分别表

2022-06-18 13:15:33 240

原创 力扣每日一题2022-06-17简单题:复写零

复写零正常情况下,可以新开一个栈来存储复写零后的数据。但是题目要求原地修改,所以不能这么做。可以使用双指针来分别指向栈顶位置和现在需要放置的元素位置即可。使用top标记栈顶,i标记现在放元素的位置,正着遍历记录一下元素位置,再倒着遍历就可以逐个去掉多余的元素,补充0进入栈。...

2022-06-17 10:09:35 179

原创 力扣每日一题2022-06-11中等题:将字符串翻转到单调递增

将字符串翻转到单调递增根据题意,单调递增字符串满足如下性质:当i>0时,如果字符串s的长度为i的前缀即s[0…i-1]单调递增,且s[i]与s[i-1]也满足上述单调递增的顺序,则长度为i+1的前缀s[0…i]也单调递增。所以可以用动态规划计算使字符串s单调递增的最小翻转次数。因为s的每个位置可以是0或1,因此对每个位置需要分别计算该位置的字符是0和该位置的字符是1的情况下的最小翻转次数。假设字符串的长度为n,对于0...

2022-06-11 10:36:56 125

原创 力扣每日一题2022-06-08简单题:有效的回旋镖

有效的回旋镖从points[0]开始,分别计算指向points[1]和points[2]的向量v1、v2。三点各不相同且不在一条直线上等价于v1v2两个向量的叉乘结果不为0。

2022-06-08 08:54:05 109

空空如也

空空如也

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

TA关注的人

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