- 博客(6)
- 收藏
- 关注
原创 数据结构:链表
本题目我存档4个节点:称之为 ABCD,只要存档了,操作的顺序并不重要。重要的是你需要想到为了两两互换,单次的操作需要存档4个节点(而不是3或者2):因为两两互换后还需要链接互换前的前后节点,所以2+2 =4。你不知道接下来的关卡内容是什么,你也不能通过任何index直接获取某个节点的内容。其中a,b是执行逆转任务:b.next = a;逆转链表,一方面需要把方向改变,另一方面需要保存尚未逆转的链表部分的‘头结点’;如此就需要3个节点:假设...->a -> b-> c->...
2024-05-02 17:47:59 206 2
原创 虚拟头结点:情不知所起,一往而深
和数列不同,链表是通过class自己定义node节点,通过 node的变量 node.next 指向下一个node,而下一个node也是如此..一直延续下去。头一次接触这样的数据结构,感觉比较抽象,但是做过一次题目,晚上第二次做就感觉好多了。最近各方面还OK,就是生活没那么精彩,坚持一下,会有花开的。见下文def_init__(self)代码随想录 day3。
2024-04-24 22:16:38 90
原创 数组小结:连续的空间,简单的思路,稳定的边界
2.判定任务的使用方法,并形成大的循环框架,清楚时间复杂度:正如卡哥所言,数组的思路并不难,我们可以因此先对问题有方法上的选择,然后根据大体要执行的内容,心里形成循环的框架,思考时间复杂度。二分法查找的复杂度是 O(log n) sort的复杂度是 O(n log n);1.理解任务本质,并结合数组的特性进行操作:比如原地删除,就需要我们理解数组是不可以简单删除的,因为数组的存储空间是连续的,不能中断。花了将近一周的时间总算把代码随想录的前两天任务做完了,还是有收获的🥹。
2024-04-23 14:17:46 196
原创 双指针:往事如走马灯回放我留不住,只能慢慢抹除ta的痕迹
何为“原地删除”,“删除”就是需要我们把数列里不需要的部分去除,“原地“需要我们不能定义新的存储空间,把数列的值搬进去。双指针就是两个指针咯,指的是什么呢?是数列的index,为什么需要两个呢?希望在一个循环里做两个不同的,但有关联的事情。那我们通过查找,把不需要的元素”扣“掉?不可以,因为数列的储存空间是连续的,不可以从中中断;怎么拿后面的元素覆盖呢?fast指针判断一个元素是需要删除,作为for循环的index。他指向需要存储的内容。他指向需要存储的位置。慢指针覆盖内心的伤疤,却记住了曾经的美好🥺。
2024-04-20 22:03:51 220
原创 二分法:哪怕一开始注定没有ta,你也要学会体面离场
首先选择一个好理解的定义:left和right是都我查找范围的边界,二者作为index对应的数,都有可能是target。而在于“离场”:当target一开始就不在数列里,我们如何有原则的判定区间,做一个有边界感的人❌,在没有目标时,中断痴心妄想的的while循环🥺。如果nums[middle] 在target的右侧,那么target最大也是nums[middle] - 1。如果nums[middle] 在target的左侧,那么target最小也是nums[middle] +1。代码随想录打卡:第一天。
2024-04-18 22:17:09 258 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人