(一)需求还是链表中的一种算法--奇偶链表。(二)奇偶链表1.问题描述给定一个单向链表的头节点head,将所有索引为奇数的节点和索引为偶数的节点分别合并,然后返回重新排序后的链表。第一个节点的索引被认为是奇数,第二个节点的索引是偶数,依此类推。请注意,偶数和奇数数组中的相对顺序应与输入的顺序相同。你必须用O(1)额外空间复杂度和O(n)时间复杂度来解决这个问题。Demo1:输入:head=[1,2,3,4,5]输出:[1,3,5,2,4]Demo2:输入:head=[2,1,3,5,6,4,7]输出:[2,3,6,7,1,5,4]2.思路:定义一个新的额外空间,逐条遍历原链表,将匹配校验数据的节点放入对应的声明变量中3.代码/***单链表的定义。*类ListNode{*val:number*next:ListNode|null*constructor(val?:number,next?:ListNode|null){*this.val=(val===undefined?0:val)*this.next=(next===undefined?null:next)*}*}*/functionoddEvenList(head:ListNode|null):ListNode|null{if(head===null){returnhead}letevenHead=head.next;//定义偶数头节点letodd=head//定义奇数头节点leteven=evenHead//定义偶数头节点while(even!=null&&even.next!=null){//移除奇偶对odd.next=even.next//下一个偶数给下一个奇数初始头odd=odd.next//将奇数节点右移一位even.next=odd.next//下一个奇数为偶数,赋予新开队列的下一个even=even.next//将偶数节点向右移动一位}odd.next=evenHead//末尾的下一个的奇数节点是偶数节点头节点返回头};空间复杂度为O(1)时间复杂度为O(n)以上参考链接https://leetcode.cn/leetbook/...写在学习遗言的路上,经常松懈《有想学技术需要监督的同学嘛~》https://mp.weixin.qq.com/s/Fy...
