- 博客(12)
- 收藏
- 关注
原创 【算法思想·数组】滑动窗口终极模板
滑动窗口本身思路上讲并不复杂,无非是left和right两个指针构建起一个动态window,再根据数据处理需要扩大或缩小窗口。但很多时候我们写滑动窗口总是难以尽善尽美,关键就在于对细节的把控,尤其是对窗口边界值处理不当和窗口变化机制的理解不够本文参考labuladong算法小抄[2、滑动窗口基本框架这个算法技巧的时间复杂度是 O(N),比字符串暴力算法要高效得多。这两个...处的操作分别是扩大和缩小窗口的更新操作,等会你会发现它们操作是完全对称的。
2024-08-18 18:45:22
277
原创 【算法思想·链表】构造链表
链表作为很常用的数据结构,很多同学在日常使用过程中或多或少都会遇到链表相关的问题,其中最常见的就是链表遍历和指针使用的问题。通过亲自手写链表,可以帮助我们深入理解链表。数据结构的工程化使用,无外乎就是增删查改,当我们亲手实现一次链表的功能,链表这个数据结构就算真正入门了。本文参考[
2024-08-15 11:35:33
718
原创 【算法思想·数组】双指针秒杀七道算法题
和。在数组中并没有真正意义上的指针,但我们可以把索引当做数组中的指针,这样也可以在数组中施展双指针技巧,。原地修改数组。
2024-08-12 14:50:43
882
原创 【算法思想·数组】差分数组
前缀和原始数组不会被修改。差分数组对原始数组进行增减差分数组思想比如说,我给你输入一个数组nums,然后又要求给区间nums[2..6]全部加 1,再给nums[3..9]全部减 3,再给nums[0..4]全部加 2,再给…一通操作猛如虎,然后问你,最后nums数组的值是什么?常规的思路很容易,你让我给区间nums[i..j]加上val,那我就一个 for 循环给它们都加上呗,还能咋样?这种思路的时间复杂度是 O(N),由于这个场景下对nums的修改非常频繁,所以效率会很低下。
2024-08-11 19:13:39
577
原创 代码随想录算法训练营day06 | 1. 两数之和,454. 四数相加 II,15. 三数之和,18. 四数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。若nums[i] == nums[i-1] 则 i += 1(i 右移), 若nums[j] = nums[j+1], 则 j -= 1(j左移)解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。
2023-06-15 20:47:09
90
1
原创 代码随想录算法训练营day05 | 242.有效的字母异位词, 349. 两个数组的交集, 202. 快乐数
2、遍历 nums1 和 nums2 两个列表里的每个数值,将其添加到tab1和tab2对应的位置。c. 遍历table, 若有位置的值不为0则说明该位置没有对冲的字母。3、遍历tab1和tab2,对应位置的数相乘若不为0则说明有交集。1、创建两个长度为1001的列表,tab1 和 tab2。b. 遍历两个字符串,字母对应的位置加加减减。a. 创建表示26个字母位置的table。中每个字符出现的次数都相同,则称。输出结果中的每个元素一定是。1、数据结构:列表 / 数组。[4,9] 也是可通过的。
2023-06-09 13:11:44
89
原创 代码随想录算法训练营day04 | 19. 删除链表的倒数第 N 个结点, 面试题 02.07. 链表相交, 142.环形链表II
给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。[1,2,3,5][][1]思路:方法一:单指针遍历1、设链表总结点数为N, 则被删除的节点之前共有 N - n 个节点2、则指针cur遍历到第 N - n 个时 执行 cur.next = cur.next.next 即可方法二:间隔为 n+1 的双指针法:1、先建立双指针fast 和 slow2、fast向前移动 n+1 个节点3、fast 和 slow 一起向前移动,直到 fast指向 None。
2023-06-06 13:11:03
78
原创 代码随想录算法训练营day03 | 203.移除链表元素, 206.翻转链表, 24. 两两交换链表中的节点
e. a 和 b 两个指针指向 cur 后的两个节点,进行交换,注意与后续节点保持连接。d. 考虑到是两两交换节点,故每次移动cur,只处理cur 后的两个节点。输入:head = [1,2,6,3,4,5,6], val = 6。输入:head = [7,7,7,7], val = 7。输入:head = [], val = 1。输入:head = [1,2,3,4,5]输入:head = [1,2]输出:[1,2,3,4,5]输出:[5,4,3,2,1]输入:head = []
2023-06-05 00:57:16
86
1
原创 代码随想录算法训练营day02 | 977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。tips:range(i, j) 包含i不包含j, range(b, t-1, -1)是从b开始到t-1,不包含t-1,只到t(相当于数轴上从右往左数,左为开区间)输入:target = 11, nums = [1,1,1,1,1,1,1,1]输入:target = 7, nums = [2,3,1,2,4,3]
2023-05-29 19:50:37
89
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人