剑指offer67题-No16.合并两个有序链表
要求:空间复杂度 O(1) ,时间复杂度 O(n) 。 方法1:新链表合并,抄自牛客题解。比较直观。 class Solution { public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { auto vhead=new ListNode(-1); //设置一个哨兵指针 ListN…
2025-5-19 15:37
|
|
2025-5-19 15:37
剑指offer67题-No15.反转链表
反转链表的三种方法--面试必考(图例超详细解析,小白一看就会!!!)-CSDN博客 要求:空间复杂度 O(1) ,时间复杂度 O(n) 。 方法1:就地逆置,三指针迭代分不太清头插法和就地逆置的区别,感觉没啥区别。三个指针temp、cur、newCur; ListNode* ReverseList(ListNode* head) { if(head…
2025-5-19 15:33
|
|
2025-5-19 15:33
剑指offer67题-No14.链表中倒数第k个结点
只遍历链表一次的做法: 双指针算法。第一个指针先走k-1步,从第k步开始,第二个指针也开始和第一个指针同步走。两个指针距离保持k-1,第一个指针走到尾节点时,第二个就刚好到了倒数第k个节点上。 class Solution { public: int kthToLast(ListNode* head, int k) { if(head == nul…
2025-5-15 21:04
|
|
2025-5-19 15:33