赞
踩
难度中等633收藏分享切换为英文接收动态反馈
给定一个单链表 L
的头节点 head
,单链表 L
表示为:
L0 → L1 → … → Ln-1 → Ln
请将其重新排列后变为:
L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 1:
输入: head = [1,2,3,4]
输出: [1,4,2,3]
示例 2:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lGmjIySU-1627734441239)(https://assets.codetop.cc/user/note/17888_r5LeCt14AI9RaylE.png)]
输入: head = [1,2,3,4,5]
输出: [1,5,2,4,3]
算法分析
1、使用快慢指针,找出链表的中心节点,分成两个链表
2、将右边的链表进行反转
3、合并两个链表
题意:将一个链表的第kk项和倒数第kk项放在一起。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode middleNode(ListNode head){
ListNode fast
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。