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

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

时间:2023-06-27 23:31:54浏览次数:36  
标签:node yyds head get Ln 金典 list next 链表

题目:

给定一个单链表 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:

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

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

代码实现:

class Solution {
    public void reorderList(ListNode head) {
        if (head == null) {
            return;
        }
        List<ListNode> list = new ArrayList<ListNode>();
        ListNode node = head;
        while (node != null) {
            list.add(node);
            node = node.next;
        }
        int i = 0, j = list.size() - 1;
        while (i < j) {
            list.get(i).next = list.get(j);
            i++;
            if (i == j) {
                break;
            }
            list.get(j).next = list.get(i);
            j--;
        }
        list.get(i).next = null;
    }
}

标签:node,yyds,head,get,Ln,金典,list,next,链表
From: https://blog.51cto.com/u_13321676/6568054

相关文章

  • leetcode 21. 合并两个有序链表
    直接合并即可这道题是简单题,直接合并即可/**Definitionforsingly-linkedlist.publicclassListNode{intval;ListNodenext;ListNode(){}ListNode(intval){this.val=val;}ListNode(intval,ListNodenext){this.val=val;this.next=nex......
  • 【华为机试ACM基础#02】从单向链表中删除指定值的节点(熟悉链表的输入方式,虽然说本题可
    从单向链表中删除指定值的节点输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。链表的值不能重复。构造过程,例如输入一行数据为:6212325145722则第一个参数6表示输入总共6个节点,第二个参数2表示头节点值为2,剩......
  • 用指针处理链表
    什么是链表?链表是一种常见的重要的数据结构。它是动态的进行春初分配的一种结构。用数组存放数据时,必须先定义固定的数组长度,显然这会浪费内存。链表则没有这个缺点,他根据需要开辟内存单元。 ......
  • #yyds干货盘点# LeetCode程序员面试金典:各位相加
    1.简述:给定一个非负整数num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 示例1:输入:num=38输出:2解释:各位相加的过程为:38-->3+8-->1111-->1+1-->2由于 2是一位数,所以返回2。示例2:输入:num=0输出:02.代码实现:classSolution{pu......
  • # yyds干货盘点 # 盘点Pandas中数据删除drop函数的一个细节用法
    大家好,我是皮皮。一、前言前几天在Python最强王者群有个叫【Chloe】的粉丝问了一个关于Pandas中的drop函数的问题,这里拿出来给大家分享下,一起学习。二、解决过程下图是粉丝写的代码。index是索引的意思,我感觉这块写在一起了,看上去不太好理解,在里边还多了一层筛选。这里给出【月神】......
  • #yyds干货盘点# LeetCode程序员面试金典:单词拆分 II
    题目:给定一个字符串s和一个字符串字典 wordDict ,在字符串 s 中增加空格来构建一个句子,使得句子中所有的单词都在词典中。以任意顺序返回所有这些可能的句子。注意:词典中的同一个单词可能在分段中被重复使用多次。 示例1:输入:s="catsanddog",wordDict=["cat","cats","......
  • [leetcode]114. 二叉树展开为链表
    总结:怎样写递归函数?关键是把递归函数的功能定义清楚,并在递归函数体中使用自身来做事,此时不要关注递归函数执行的细节。也就是写高层级代码的时候不要关注低层级的事情,这就叫抽象。关注也没有用,想不清楚的。 1classSolution{2publicvoidflatten(TreeNoderoot){......
  • #yyds干货盘点# LeetCode程序员面试金典:复制带随机指针的链表
    题目:给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由n个全新节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制......
  • #yyds干货盘点# LeetCode程序员面试金典:最短回文串
    1.简述:给定一个字符串s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。 示例1:输入:s="aacecaaa"输出:"aaacecaaa"示例2:输入:s="abcd"输出:"dcbabcd"2.代码实现:classSolution{publicStringshortestPalindrome(Strings)......
  • 【代码设计】链表结构解决多流程校验
    目的使用合理的代码设计,解决业务场景的中的实际问题。背景介绍在实际的业务场景中,用户的一个操作行为,是否允许真正被执行,往往会涉及到多流程的校验,一旦有条件不满足将会被中止。以下面流程图为例:用户点击了打赏按钮,会进行是否有网络检查,没有网络,会有网络连接弹框,等待用户连接结果......