自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【每日刷题】技巧合集-LC136、LC169

解法一:先给数字排序,如果num[i]与nums[i-1]或nums[i+1]都不一致,则返回nums[i]。补充知识点:太强了!!!所以。

2024-04-14 16:56:55 447

原创 【每日刷题】代码随想录-动规32

不用动规。双指针法。快指针遍历,慢指针指向最小的。max维护最大差值。min=第一天价格,如果碰到有比min低的,则更新min。代码。

2024-04-14 16:56:04 208

原创 【暑期刷题】链表-LC92、LC25

采用头插法。这样只用一次遍历就可以。定义两个指针,一个指针pre指向left的前一个节点,一个指针cur。cur的next插到最前面,即pre的next。代码。

2024-03-31 16:38:29 407

原创 【每日刷题】栈与队列-LC394、LC347、LC215

题外话:感觉脑子没长到栈这块…最近刷栈的题都好难啊…哭哭…坚持坚持!多刷几遍就好了!!

2024-03-09 22:10:15 899 1

原创 【每日刷题】栈与队列-随想录4、7、8、LC155、单调栈-LC739、单调栈-LC84

题解很妙。遍历到 [ { ( 的时候往stack里加入对应的 ] } )元素。遍历到右边元素的时候,就看栈顶弹出的元素是否一致。这解决了问题。但同时要注意!!两种情况代码。

2024-03-08 23:33:58 1000

原创 【每日刷题】双指针-LC283、LC11、LC42

解法一:O(n^2)(不用看了,第一遍尝试的解法,时间复杂度太高)依次往后遍历,每遇到0,后面的数就挨个往前移一个,fast指向0应该移到末尾的位置,将fast处置0。两个指针,fast,slow。fast从0开始往后遍历,遇到不是0的数,就存到slow指针指向的地方,slow往前移一个。相当于fast往前移动着,slow接着fast传过来的不为0的数据。最后,slow停在末端0串的开头,于是从slow开始遍历到最后一个,全部置0。

2024-03-04 20:38:50 809

原创 【每日刷题】哈希-随想录2、3、4、5、8、LC49、LC128

题目中已经暗示了,只有两种情况,一是无限循环但不等于1,二是无限循环等于1。至于为什么一定会无限循环,答案是因为int类型最大值为为‭‭2 147 483 647‬‬, 所以平方和最大的数是1 999 999 999,平方和为1 + 81*9 = 724。暴力for循环,嵌套,遍历。i固定,j从i+1开始遍历,如果strs[i], strs[j]互为异位词,加入temp,并在record数组中标记该字符串以和别的字符串互为异位词。输入:nums1 = [0,3,7,2,5,8,4,6,0,1]。

2024-03-01 22:55:59 820

原创 【每日刷题】链表-LC148、LC234、链表逆序打印、LC2、LC23、LC19

按大小合并两个子序列:(21. 合并两个有序链表)递归时,写递归结束条件注意!不止有head == null,还有 head.next == null。当只有一个节点的时候,也不再递归,直接返回该节点。

2024-02-29 16:52:04 804

原创 【每日刷题】链表-随想录2、3、LC160、LC141、142、21

虚拟头节点。

2024-02-28 18:06:21 474

原创 【每日刷题】数组-LC56、LC238、随想录1、、LC33、LC560

最重要的是确定左闭右闭区间,所以while条件是

2024-02-28 10:31:33 382

原创 【每日刷题】 动规-力扣152、53、5、647

由于存在负数,那么会导致最大的变最小的,最小的变最大的。所以考虑维护两个数组,dpMax[i],dpMin[i]。因为是连续,所以nums[i]要么和dp[i-1]乘,要么乘积重新从nums[i]开始。=0的情况可以直接在>0情况里包含。最后返回dpMax[i]中最大的。代码。

2024-02-22 11:55:02 1494 1

原创 【每日刷题】代码随想录-动规41、42、43、44、50

含义:dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度公式:位置i的最长升序子序列等于j从0到i-1各个位置的最长升序子序列 + 1 的最大值。初始化:所有dp[i]都为1最后结果不是dp[dp.length-1],而是所有dp[i]的最大值代码。

2024-02-21 00:32:26 904

原创 【每日刷题】代码随想录-动规19、21、26、29、30

外层i=0,内层j=i+1,只要substring(i,j)在字典里出现,dp[j]标为true,i=j重新开始一个遍历。返回最后一个dp[j]。输入: s = “leetcode”, wordDict = [“leet”, “leetcode”]。如果用上述做法输出为false。dp[j]表示长度为j是否能被构成。初始化dp[0]=true。4. 代码随想录-动规29.打家劫舍。5.代码随想录-动规30.打家劫舍2。完全背包,有排列,所以先j后i。定义两个dp,比较dp末尾大小。

2024-02-19 18:03:12 382 1

原创 【每日刷题】代码随想录-动规14、18、23、24、LC-动规118

最小重量,即最小的相差重量。石头总重/2,用01背包。本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。因为石头总重/2是向下取整,所以剩下的重量为sum-target*2代码。

2024-02-18 22:08:30 815 1

原创 【每日刷题】动态规划-代码随想录动规-11、12、13

dp[i][j]的含义:从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少。

2024-02-17 23:15:01 1816 1

原创 【每日刷题】动态规划-代码随想录动规-8、9

dp[i]表示拆分i的最大乘积解释:从1遍历j,有两种渠道得到dp[i].一个是j * (i - j) 直接相乘。一个是j * dp[i - j],相当于是拆分(i - j)为何不拆分j:j是从1开始遍历,拆分j的情况,在遍历j的过程中其实都计算过了比如:dp[7]拆分3和dp[4],为什么不拆分3?因为dp[7]拆成1和dp[6]的时候就已经拆3了(1+2+4):dp[0] = 0;dp[1] = 0;dp[2] = 1;

2024-01-06 23:46:31 1809 1

原创 【每日刷题】动态规划-代码随想录动规-6、7

dp[i][j]表示走到当前格子时的方法总数:当i=0或者j=0的时候,dp[i][j] = 1,因为只有一条路可以走到这些位置。有一种更为简单的代码:先把i=0和j=0的边走完,然后从[1][1]开始遍历,这种解法在这里看似和上一种写法差不多,但是在下道题目里就会不一样了,明显这种写法会更加简单快捷。

2024-01-05 11:20:32 432 1

原创 【每日刷题】动态规划-代码随想录动规-2、3、4

这道题回溯法也很简单,主要是熟悉动规解题步骤。

2024-01-03 13:12:07 413 1

原创 【每日刷题】贪心算法-代码随想录贪心-2、3、4

今日主题是贪心算法。第一次接触贪心算法,贪心算法的核心是从局部最优推全局最优。没有固定的解题思路,一般做法如下:1.将问题分解为若干个子问题2.找出适合的贪心策略3.求解每一个子问题的最优解4.将局部最优解堆叠成全局最优解。

2023-12-29 23:29:17 386 1

原创 【每日刷题】回溯-LCHOT100-22、79、代码随想录回溯-19、20

从今天开始打算把每天的刷题进度同步到CSDN上,一是方便管理刷题进度,二是方便二刷时回来看当时的解题思路。目前一刷按照代码随想录和力扣HOT100来刷的,今日主题是回溯。

2023-12-25 22:54:40 403

原创 算法训练第11天 | 栈与队列part02

栈与队列part02

2023-05-09 15:30:39 70

原创 算法训练第10天 | 栈与队列part01

栈与队列part01

2023-05-06 21:20:14 87

原创 算法训练第八天 | 字符串part1

字符串part1

2023-04-25 10:45:28 65

原创 算法训练第七天 | 哈希part2

哈希part2

2023-04-24 10:19:07 52

原创 算法训练第六天 | 哈希part1

哈希表part01

2023-04-15 14:12:35 243

原创 代码随想录算法训练营第二天 | LeetCode977 有序数组的平方、LeetCode209 长度最小的数组

因为原数组为非降序数组,决定了平方后,数字大的一定集中在两头,数字小的集中在中间。再定义一个新数组,用一个指针指向新数组的尾,上述二者中大的值插入到新数组的尾部。for循环一遍数组,求出每个index对应的平方值,然后用Array.sort()函数将数组排序,返回排序后的数组。的思想,for循环定义窗口右指针遍历数组所有元素,在每次遍历内部,又定义了窗口左指针,结合while,寻找最小长度。缺点:sort函数的时间复杂度高,力扣上显示用时5ms,而下一个方法时间复杂度为O(n),用时只耗费了1ms。

2023-04-10 09:51:58 53

原创 代码随想录算法训练营第四天 | LeetCode24 链表中节点两两交换、LeetCode19 删除倒数第n个节点、LeetCode02.07 求两链表相交值、LeetCode142 环形链表

所以可得如下思路:求出sizeA和sizeB,作差,假设A链表比B链表多n个节点,即差值为n,则可跳过A链表的前n个节点,从A链表的第n+1个节点开始,与B链表的第一个节点相比较,之后二者可以同时往后遍历。如果环里有m个节点的话,快追慢最坏的情况是,快指针走到环里第二个节点的时候,慢指针进入环的第一个节点,则此时快要追慢m-1个节点。因为快指针一次走两步,慢指针一次走一步这个规则,保证了每一步中,快指针是多走一步的,所以如果有环,在某个节点,当快指针多走一步之后,快慢指针一定能保证相遇。

2023-04-09 16:31:00 76 1

原创 代码随想录算法训练营第三天 | LeetCode203 移除链表元素、LeetCode707设计链表、LeetCode206反转链表

今天前两题目都需要:遍历链表的时候要新定义一个current指针来遍历!很重要!最后一道题双指针法。也相当于要新定义一个current和pre指针指向已有节点,进行遍历。

2023-04-08 12:27:46 56 1

原创 代码随想录算法训练营第一天 | LeetCode704 二分查找、LeetCode27 移除元素

因为找到一个与val相等的,则后面的所有数字都需往前移一位,则数组的总长度会-1,所以不能固定nums.length。猜测fast内存仅在for循环内使用,走出循环,此内存便不再占用了,因此少了0.2MB。上述代码提交后,执行时间结果很满意,但是内存消耗为40.3MB,仅仅打败了4%的提交记录。定义一个快指针循环遍历原数组的全部元素,定义一个慢指针存储符合条件,即值不等于val的元素(元素值覆盖)。找到一个与val相等的,则从这个索引起,后面的所有数字往前移一位,覆盖前面的数字。

2023-04-06 00:34:40 170

空空如也

空空如也

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

TA关注的人

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