
算法学习
文章平均质量分 66
@ShiYi
这个作者很懒,什么都没留下…
展开
-
leetcode 链表(一)
双指针方法:j指针先遍历,j指针与i指针相差n个节点,j指针到头,就可以知道i的位置,i之后的节点就为要删除的节点。思路:本题为链表的基础题,考察增加,删除,查找元素。构造一个虚拟头结点,指向第一个节点。常规方法:找到倒数第N个节点,需要求出节点总数,在找到目标节点,需要进行两次链表遍历。思路:考察删除链表节点的操作,该链表头结点有值,可以创建一个虚拟节点指向头结点。用p,q,t三个指针来表示第一,第二,第三个节点,然后进行反转。然后i,j同时走,直到j遍历结束,就可求得i。之后返回虚拟节点的next。原创 2024-06-25 15:14:17 · 570 阅读 · 0 评论 -
leetcode 数组(一):双指针,滑动窗口
定义i,j指针,j指针加1,当子串i–j满足条件时,i指针更新,直到不满足条件,并记录长度以及起止位置;可以用双指针,i指针在前,j指针在后,它们之间的距离 + 1就是子数组的长度,然后求满足条件的子数组。上面的方法是i指针一步步加1,j指针然后循环,所以时间复杂度就为O(N^2)思路:给定一个主字符串s,再给一个模板字符串t,求s中包含t的最小子串。保证固定j指针的情况下,得到满足条件的子数组的最小长度。现在考虑让j指针不动,i指针+1,这样就是O(N)求连续的包含两种数字的子数组的长度。原创 2024-06-06 19:15:50 · 322 阅读 · 0 评论 -
算法 -- 离散化
为什么要离散化?因为数据值的范围远大于维护数组的范围,而此时需要却需要数据所对应的下标,即需要将数据映射到数组下标上。核心思想:将数据映射到数组下标。该如何映射呢?存储当前数据,当前数据所对应的下标就为离散化后的结果。原创 2024-03-22 18:42:07 · 243 阅读 · 0 评论