- 博客(11)
- 收藏
- 关注
原创 代码随想录第七天
这么写就是当前使用 nums[i],我们判断前一位是不是一样的元素,在看 {-1, -1 ,2} 这组数据,当遍历到 第一个 -1 的时候,只要前一位没有-1,那么 {-1, -1 ,2} 这组数据一样可以收录到 结果集里。
2023-03-26 22:57:29
30
原创 代码随想录第六天
set是一个集合,里面放的元素只能是一个key,而两数之和这道题目,不仅要判断y是否存在而且还要记录y的下标位置,因为要返回x 和 y的下标。那看一下如何检查字符串t中是否出现了这些字符,同样在遍历字符串t的时候,对t中出现的字符映射哈希表索引上的数值再做-1的操作。,当我们需要查询一个元素是否出现过,或者一个元素是否在集合里的时候,就要第一时间想到哈希法。数组的大小是受限制的,而且如果元素很少,而哈希值太大会造成内存空间的浪费。而这道题目没有限制数值的大小,就无法使用数组来做哈希表了。
2023-03-26 22:49:45
52
原创 代码随想录第四天
可以使用快慢指针法,分别定义 fast 和 slow 指针,从头结点出发,fast指针每次移动两个节点,slow指针每次移动一个节点,如果 fast 和 slow指针在途中相遇 ,说明这个链表有环。为什么fast 走两个节点,slow走一个节点,有环的话,一定会在环内相遇呢,而不是永远的错开呢。fast和slow各自再走一步, fast和slow就相遇了。这是因为fast是走两步,slow是走一步,,所以fast一定可以和slow重合。
2023-03-26 22:39:45
30
原创 代码随想录第三天
为什么要保存一下这个节点呢,因为接下来要改变 cur->next 的指向了,将cur->next 指向pre ,此时已经反转了第一个节点了。最后,cur 指针已经指向了null,循环结束,链表也反转完毕了。此时我们return pre指针就可以了,pre指针就指向了新的头结点。然后就要开始反转了,首先要把 cur->next 节点用tmp指针保存一下,也就是保存一下这个节点。首先定义一个cur指针,指向头结点,再定义一个pre指针,初始化为null。
2023-03-26 22:31:10
32
原创 代码随想录第二天
二分法在这道题目中我们讲到了循环不变量原则,只有在循环中坚持对区间的定义,才能清楚的把握循环中的各种细节。双指针法通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。滑动窗口本题中,主要要理解滑动窗口如何移动 窗口起始位置,达到动态更新窗口大小的,从而得出长度最小的符合条件的长度。滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)的暴力解法降为O(n)。
2023-03-26 22:27:20
48
原创 代码随想录算法训练营第一天
同时定义两头位置指针,确定一个终止指针做一次大循环,第一个指针,不动,第二个指针移动,不能使用ptr2++,当到达最后一个元素时,nums【ptr+1】没有这个数。注意查找时的左闭右闭,还是左闭右开;二分查找最主要定义边界 条件,是按照前面定义的左闭右开还是左闭右闭来决定。当区间左闭右闭的时候,while(l
2023-03-03 23:42:31
52
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人