首页 > 其他分享 >链表划分

链表划分

时间:2023-06-15 14:33:03浏览次数:34  
标签:ListNode cur cur1 next 链表 划分 null


链表划分

题目:
描述
给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。

样例
样例 1:
输入:
list = null
x = 0
输出:
null
解释:
空链表本身满足要求

样例 2:
输入:
list = 1->4->3->2->5->2->null
x = 3
输出:
1->2->2->4->3->5->null

/**
 * Definition for ListNode
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */

public class Solution {
    /**
     * @param head: The first node of linked list
     * @param x: An integer
     * @return: A ListNode
     */
    public ListNode partition(ListNode head, int x) {
        // write your code here
        if(head == null) {
            return null;
        }

        ListNode root1 = new ListNode(0), root2 = new ListNode(0);
        ListNode cur = head, cur1 = root1, cur2 = root2;

        while(cur != null) {
            if(cur.val < x) {
                cur1.next = cur;
                cur = cur.next;
                cur1 = cur1.next;
                cur1.next = null;
            } else {
                cur2.next = cur;
                cur = cur.next;
                cur2 = cur2.next;
                cur2.next = null;
            }

        }

        cur1.next = root2.next;
        return root1.next;
    }
}


标签:ListNode,cur,cur1,next,链表,划分,null
From: https://blog.51cto.com/u_14813899/6487233

相关文章

  • 链表
    数组的内存空间是连续的,链表是不连续的链表分为单端链表和双端链表访问O(N)搜索O(N)插入O(1)删除O(1)写很快但是读很慢常用操作:1.创建链表2.添加元素3.访问元素4.查找元素5.删除元素6.链表的长度203给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.......
  • [C语言/PTA] 学生成绩链表处理
    题目要求本题要求实现两个函数,一个将输入的学生成绩组织成单向链表;另一个将成绩低于某分数线的学生结点从链表中删除。函数接口定义:structstud_node*createlist();structstud_node*deletelist(structstud_node*head,intmin_score);函数createlist利用scanf从输入......
  • [C语言/PTA] 单链表结点删除
    题目要求本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中所有存储了某给定值的结点删除。链表结点定义如下:structListNode{intdata;ListNode*next;};函数接口定义:structListNode*readlist();structListNode*deletem(structListNode*L,intm);......
  • [C语言/PTA] 建立学生信息链表
    题目要求本题要求实现一个将输入的学生成绩组织成单向链表的简单函数。函数接口定义:voidinput();该函数利用scanf从输入中获取学生的信息,并将其组织成单向链表。链表节点结构定义如下:structstud_node{intnum;/*学号*/charnam......
  • 数据结构和算法——旋转打印链表
    1、问题描述输入参数nn为正整数,如输入n=5n=5,则按行打印如下的数字:2、问题的理解这个问题是将数字1…n21…n2按照一圈一圈的方式......
  • 算法面试:单向链表节点的奇偶排序。
    给定一个单项链表,要求实现一个算法,把链表分成两部分,前一部分全是下标为偶数的节点,后一部分全是下标为奇数的节点,例如给定链表为下图的第一个队列,要求编写一个算法,将链表转换为第二个队列:要求算法不能分配多余的内存,同时,在操作链表是,不能更改节点内部的内容,只能更改节点的next指针......
  • 算法面试之道:在O(1)的时间内删除单链接链表的指定节点
    对于一个单项链接的链表,给定其中某个任意节点,要求在O(1)的时间复杂度内删除该节点。表面上看起来,似乎不可能做到,因为如果要求时间复杂度是O(1)的话,那意味着,算法实现中,不得包含有任何循环或是对链表的整体遍历。但问题在于,要删除某个指定节点,我们需要通过遍历,找到该节点的前节点,然......
  • 链表
    结构体结构体的首地址即为结构体第一个成员的地址,如果结构体的第一个成员是数组,则结构体的地址也是数组中第一个成员的地址链表的基础知识顺序表(比如说数组)各元素的地址是连续的。数组存储在栈区,而链表存储在堆区。图中指针也称为链,指针的类型就是结构体的名字,比如结构......
  • 数据仓管概念、关系建模和维度建模、维度表和事实表、数据仓库建模、什么是拉链表?
    目录数据仓管概念数据仓管分为5层数仓为什么要分层数据集市和数据仓库的区别数仓命名规范范式理论第一范式第二范式第三范式关系建模和维度建模星型模型:雪花模型:星座模型:模型选择:维度表和事实表数据仓库建模ODSDWD什么是拉链表?数据仓管概念数据仓管分为5层ODS原始数据层存......
  • 【基础算法】单链表的OJ练习(2) # 链表的中间结点 # 链表中倒数第k个结点 #
    前言对于单链表的OJ练习,<fontcolor=bluesize=4>需要深刻理解做题的思路</font>,这样我们才能够在任何场景都能够熟练的解答有关链表的问题。关于OJ练习(1):==->==传送门==<-==,其题目较为简单,思路也好理解,本章与(1)差不多,难度不大,<fontcolor=orangesize=4>核心点就在于理解解......