- 博客(15)
- 收藏
- 关注
原创 leetcode hot100算法思路分享 day8 19/100
具体来说,比如一开始我们从最左边开始读取,即i=l,并且逐步增加i直到i=r,这就意味着我们已经完成了这一行从左到右的读取。为了准备下一次从左到右的读取,且下一次是在新的一行,所以需要将顶部边界向下移动一位,也就是让t++。其他方向读取亦然,通过适时调整相应的边界值来确保每次都按照正确的顺序进行读取。我们定义了四个边界值:l(左)、t(顶)、r(右)和b(底)。我们的读取顺序是从左到右、从上到下、从右到左、再从下到上。每当我们完成了一行或一列的读取后,我们会相应地调整这些边界值。
2026-04-04 17:30:00
160
原创 leetcode hot100算法思路分享 day5 12/100
【再另定义遍历bt,代表窗口内满足覆盖t串的字符数】。在遍历s串的过程中,right++加入元素的时候,对diff[‘x’]–,如果–后变成0,说明此时窗口内x字符数量满足了覆盖t串该字符数量。【移出left元素时,先判断diff[‘x’]值,如果diff[‘x’]值为0,此时移出则说明窗口内x元素数量不再>=t串x字符数量,即为破坏了条件】。为什么要用tkind和bt呢,因为s串中会包含很多t串没有的字符,而我们不需要考虑那些元素,我们要比较的只有tkind。10.和为K的子数组。11.滑动窗口最大值。
2026-03-31 21:25:35
334
原创 leetcode hot100算法思路分享 day4 9_100
然后,在遍历字符串s时,每遇到一个字符,就在字符数组中把这个字符的计数减1。如果减1后这个字符的计数仍然大于0,说明当前窗口内的这个字符数量还没有超过p中的数量,我们可以继续向右移动窗口(即right++)。如果减1后这个字符的计数小于0,说明当前窗口内的这个字符数量超过了p中的数量,这时我们需要调整窗口,通过向右移动left指针,直到把多余的字符移出窗口为止。遍历s串的所有满足长度为n的子串,当满足Arrays.equals(schar,pchar)时,就将此时窗口的left加入ans。
2026-03-26 18:00:00
667
原创 leetcode hot100算法思路分享 day2 5/100
本文介绍了三个LeetCode数组相关题目的解法。第一题是"最长连续序列",通过哈希表存储元素并避免重复遍历实现O(n)时间复杂度。第二题"移动零"采用双指针技巧,在一次遍历中将非零元素前移。第三题"盛最多水的容器"使用双指针和贪心策略,通过调整较低端指针来寻找最大面积。三题都展示了如何利用哈希表或双指针优化数组操作,将时间复杂度从O(n²)降至O(n)。Java和Python代码实现简洁高效,体现了算法设计的巧妙性。
2026-03-23 18:50:03
333
原创 【字节青训营】掘金AI刷题-二分数字组合 【动态规划实现】
分组的目标是使得一组数字的和的个位数等于给定的 A,另一组数字的和的个位数等于给定的 B。和目标 A = 1,B = 2,可行的划分包括三种:每个 1 单独作为一组,其余两个 1 形成另一组。因为我们把一堆数n,分成两堆数1和2,其中1的和与2的和一定等于n的和,所以(1的和的个位+2的和的个位)%10(即两堆之和的个位)一定等于n的和的个位。本题另有回溯算法来解,理解更简单,思路就是回溯所有组合情况,判断组合的和的个位与剩余数(即作为另外一组)和的个位是否满足一A一B,满足就记录++即可。
2024-12-04 22:50:15
648
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
6