首页 > 编程语言 >#yyds干货盘点# LeetCode程序员面试金典:奇偶链表

#yyds干货盘点# LeetCode程序员面试金典:奇偶链表

时间:2023-12-01 22:02:13浏览次数:28  
标签:even 奇偶 head ListNode yyds next 链表 odd 节点

题目

给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。


第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。


请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。


你必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。


 


示例 1:




输入: head = [1,2,3,4,5]

输出: [1,3,5,2,4]

示例 2:




输入: head = [2,1,3,5,6,4,7]

输出: [2,3,6,7,1,5,4]

代码实现


class Solution {
    public ListNode oddEvenList(ListNode head) {
        if (head == null) {
            return head;
        }
        ListNode evenHead = head.next;
        ListNode odd = head, even = evenHead;
        while (even != null && even.next != null) {
            odd.next = even.next;
            odd = odd.next;
            even.next = odd.next;
            even = even.next;
        }
        odd.next = evenHead;
        return head;
    }
}



标签:even,奇偶,head,ListNode,yyds,next,链表,odd,节点
From: https://blog.51cto.com/u_13321676/8649270

相关文章

  • #yyds干货盘点# LeetCode程序员面试金典:下一个更大元素 II
    题目给定一个循环数组nums(nums[nums.length-1]的下一个元素是nums[0]),返回nums中每个元素的下一个更大元素。数字x的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出-1。 ......
  • #yyds干货盘点# LeetCode程序员面试金典:下一个更大元素 II
    题目给定一个循环数组nums(nums[nums.length-1]的下一个元素是nums[0]),返回nums中每个元素的下一个更大元素。数字x的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出-1。 ......
  • 代码随想录day4链表2
    day424.两两交换链表中的节点19.删除链表的倒数第N个节点面试题02.07.链表相交142.环形链表II总结资料来源:代码随想录(programmercarl.com)5.两两交换链表中的节点classSolution{private:/*data*/public:Solution(/*args*/);~Solution();......
  • # yyds干货盘点 # input()这个有没有什么优化的办法可以记住前面的数据?
    大家好,我是皮皮。一、前言前几天在Python最强王者交流群【哎呦喂 是豆子~】问了一个Python数据输入的问题,一起来看看吧。问题描述:大佬们 在咨询一个问题 就是这个input 涉及多个 然后可能敲到最后一个数据敲错了又得重新敲一遍这个有没有什么优化的办法可以记住前面的数......
  • 代码随想录day3链表1
    链表理论基础203.移除链表元素707.设计链表206.反转链表资料来源:代码随想录(programmercarl.com)1链表理论基础定义:是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。......
  • 82. 删除排序链表中的重复元素 II
    82.删除排序链表中的重复元素II2021年3月25日​数据量300,数据大小[-200,200]​题意很简单,就考验你指针的使用。​两种方法桶排序暴力法思路很简单,加个100的偏移量,然后全都存下来,再倒着存进链表里返回即可。classSolution{public:ListNode*deleteDuplicates(......
  • 83. 删除排序链表中的重复元素
    83.删除排序链表中的重复元素2021年3月26日删除排序链表中的重复元素II的简化版,while套while就行为了时间,指针都不删除吗?classSolution{public:ListNode*deleteDuplicates(ListNode*head){ListNode*p=head;while(p&&p->next){w......
  • 61. 旋转链表
    61.旋转链表2021年3月27日将链表每个节点向右移动\(k\)个位置首先,假设链表长度为\(len\)当\(k<len\)时,相当于后\(k\)位移到前面当\(k>len\)时,令\(k\%=len\),然后再移动即可classSolution{public:ListNode*rotateRight(ListNode*head,intk){if(he......
  • # yyds干货盘点 # 麻烦问一下Python采集到的文本列表中有大量的 ', ' 符号 想这种符号
    大家好,我是皮皮。一、前言前几天在Python铂金流群【泅渡】问了一个Python字符处理的问题,一起来看看吧。问题描述:麻烦问一下Python采集到的文本列表中有大量的  ','  符号 想这种符号怎么删除?二、实现过程这里【不上班能干啥!】和【瑜亮老师】分别给了一个指导,如下图所示:......
  • 19.删除链表的倒数第N个节点
    leetcode题目链接题目描述给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例3:输入:head=[1,2],n=1输出:[1]提示:链表中结点的数目为sz1<=sz<=300<=Node.val<=10......