首页 > 其他分享 >重新排序链表

重新排序链表

时间:2023-05-16 21:56:39浏览次数:55  
标签:head ListNode head2 fast next 链表 重新 排序 midnode

 

/**  * Definition for singly-linked list.  * struct ListNode {  *     int val;  *     ListNode *next;  *     ListNode() : val(0), next(nullptr) {}  *     ListNode(int x) : val(x), next(nullptr) {}  *     ListNode(int x, ListNode *next) : val(x), next(next) {}  * };  */ class Solution { public:     void reorderList(ListNode* head) {         ListNode* midnode = split(head);         ListNode* pre = NULL;         while(midnode)         {             ListNode* temp = midnode -> next;             midnode -> next = pre;             pre = midnode;             midnode = temp;         }         ListNode* head1 = head,*head2 = pre;         while(head1 != head2){             ListNode* n1 = head1 -> next;             ListNode* n2 = head2 -> next;             head1 -> next = head2;             if(n1 == head2) break;             head2 -> next = n1;             head1 = n1;             head2 = n2;         }        }     ListNode* split(ListNode* head)     {         ListNode* slow = head,* fast = head;         while(fast != NULL && fast -> next != NULL){             slow = slow -> next;             fast = fast -> next -> next;         }         return slow;     } };

标签:head,ListNode,head2,fast,next,链表,重新,排序,midnode
From: https://www.cnblogs.com/hbro/p/17406962.html

相关文章

  • LC19. 删除链表的倒数第 N 个结点
    删除链表的倒数第N个结点(中等)Q:给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例:示例一:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例二:输入:head=[1],n=1输出:[]实例三:输入:head=[1,2],n=1输出:[1]A:思路:对于本题来讲,其本质仍为删除链表......
  • (双指针)剑指 Offer 22. 链表中倒数第k个节点
    题目描述:输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。    classSolution......
  • 用Java集合中的Collections.sort方法对list排序的两种方法
    用Collections.sort方法对list排序有两种方法[color=darkblue][b]第一种是list中的对象实现Comparable接口[/b][/color],如下:/***根据order对User排序*/publicclassUserimplementsComparable{privateStringname;privateIntegerorder;publicStringge......
  • 图解LeetCode——234. 回文链表
    一、题目给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。二、示例2.1>示例1:【输入】head=[1,2,2,1]【输出】true2.2>示例2:【输入】head=[1,2]【输出】false提示:链表中节点数目在范围[1,10^5]内0<=Node.v......
  • C++黑马程序员——P207-209. deque容器 插入和删除,数据存取,排序操作
    P207.deque容器——插入和删除P208.deque容器——数据存取P209.deque容器——排序操作P207.deque插入和删除 ————————————————————————————————————————————————————————1#include<iostream>2#......
  • 链表排序
    /***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx):val(x),next(nullptr){}*ListNode(intx,ListNode*next):val(x),next(next){}*......
  • Redis数据结构二之SDS和双向链表
    本文首发于公众号:Hunter后端原文链接:Redis数据结构二之SDS和双向链表这一篇笔记介绍一下SDS(simpledynamicstring)和双向链表。以下是本篇笔记目录:SDS常数复杂度获取字符串长度杜绝缓冲区溢出减少修改字符串带来的内存重分配次数二进制安全兼容C字符串函数双向链......
  • 数组排序输出
    一.问题描述:对于输入的每一批数,按从小到大排序后输出。一行输入为一批数,第一个输入为数据类型(1表示整数,2表示字符型数,3表示有一位小数的浮点数,4表示字符串,0表示输入结束),第二个输入为该批数的数量size(0<size<=10),接下来为size个指定类型的数据。输出将从小到大顺序输出数据。#i......
  • 【排序最少操作数,最长子序列】MT笔试
    题目:给一个n个数的排列,n的数的范围为1~n且各不相同,比如[3,1,2]为一个3个数的排列。现在要求对这个无序的n个数的排列,排成一个递增序列,但只能进行一种操作:从n个数中任选两个数,大的放最后一位,小的放第一位,问最少进行多少次这种操作,n个数的排列最终变成一个递增序列。例如[1,5,4,2,3......
  • 16、MapReduce的基本用法示例-自定义序列化、排序、分区、分组和topN
    文章目录Hadoop系列文章目录一、pom.xml与测试数据说明、日志配置1、pom.xml2、数据字段说明3、日志配置二、序列化1、需求2、实现说明3、实现1)、bean2)、Mapper3)、Reducer4)、Driver4、验证三、排序1、需求2、实现说明3、实现1)、bean2)、Mapper3)、Reducer4)、Driver4、验证四、分区1......