问题描述:

Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.

You should preserve the original relative order of the nodes in each of the two partitions.

For example,
Given 1->4->3->2->5->2 and x = 3,
return 1->2->2->4->3->5.

算法分析:开始我只是想在原来链表上进行操作,但是无法返回头结点。这道题区别链表反转,链表反转不用新建链表,只用在原有的链表上操作就行了。这道题,要新建两个新的链表,一个链表的元素全部小于目标值,另一个链表的元素全部大于目标值。然后把这两个链表连接起来。

public ListNode partition(ListNode head, int x){if(head == null || head.next == null){return head;}ListNode lessHead = new ListNode(0);ListNode greaterHead = new ListNode(0);ListNode less = lessHead, greater = greaterHead;ListNode node = head;while(node != null){ListNode temp = node.next;if(node.val < x){less.next = node;less = less.next;less.next = null;}else{greater.next = node;greater = greater.next;greater.next = null;}node = temp;}less.next = greaterHead.next;return lessHead.next;}

转载于:https://www.cnblogs.com/masterlibin/p/5804432.html

Partition List,拆分链表相关推荐

  1. [CareerCup] 2.4 Partition List 划分链表

    2.4 Write code to partition a linked list around a value x, such that all nodes less than x come bef ...

  2. c语言链表拆分,C语言拆分链表程序

    创建一个链表,并这个链表拆分成为两个链表的示例程序,将以下代码保存到一个源文件中:split_linked_list.c, 如下所示 – #include #include struct node { ...

  3. 数据结构—链表-单链表应用-拆分链表

    拆分单链表 算法是函数需要三个指针类型的参数,分别是L头指针,指针L1和指针L2 我们先设置一个p指针,他指向L->next,即第一个节点,再定义p和r1两个指针. 首先我们令L1等于L即L1这 ...

  4. c语言链表拆分,P2 拆分链表

    ## 将一个链表A拆分成两个,序号是奇数留在链表A中,序号是偶数保存在链表B中 ``` #include #include //将一个链表拆分成两个,奇数留在链表A中,偶数保存在链表B中 typede ...

  5. 拆分一个链表为偶数链表和奇数链表

    拆分一个链表为偶数链表和奇数链表 问题简述 设计一个算法,将一个结点值为自然数的单链表拆分为两个单链表,原表中保留值为偶数的结点,而值为奇数的结点按他们在原表中的相对次数组成一个新的单链表 代码实现 ...

  6. python实现单链表快速排序升序linkedqueue_LeetCode 总结 - 搞定 Linked List 面试题

    链表删除 [203] Remove Linked List Elements [19] Remove Nth Node From End of List [83] Remove Duplicates ...

  7. 面试官系列 - LeetCode链表知识点题型总结

    文章目录 前言 知识点 什么是链表 类别 单向链表 循环链表 双向链表 双向循环链表 与数组的性能对比 优缺点 常用技巧 题型总结 基本操作 删除类 翻转类题型 合并链表 环形链表 拆分链表 排序链表 ...

  8. 每周leetcode - 02链表专题 237/83/234/138/92/142/Offer 22/148/23/24/147/86/61/328/2/Offer06

    文章目录 leetcode - 237. 删除链表中的节点 leetcode - 83. 删除排序链表中的重复元素 leetcode - 234. 回文链表 leetcode - 138. 复制带随机 ...

  9. 基于visual Studio2013解决面试题之0804复杂链表

     题目 解决代码及点评 /*复杂链表的拷贝,现在有一个复杂链表,完成一个clone函数拷贝一个链表复杂链表是指struct Node{struct Node* _next;struct Node ...

最新文章

  1. JavaScript初学者编程题(24)
  2. layui概述||layui的学习内容
  3. 如何缩短IDEA行号的距离
  4. 【BZOJ2705】Longge的问题,数论练习
  5. python解析sql语句表名_python正则表达式匹配sql语句中的表名
  6. 翁恺老师C语言学习笔记(十)指针_指针运算
  7. POJ3169 Layout(差分约束)
  8. JDK_Proxy_InvocationHandler_动态代理
  9. android 手机内存uri_Android通过Uri转化为本地绝对路径的方案(全版本适配4.1-7.0)...
  10. Un*、Id分别突变情况下单闭环直流调速系统仿真
  11. python爬取贴吧网页信息
  12. html怎么美化输入框,css 美化input输入框-美化按钮
  13. ThinkPad默认墙纸(心经版)
  14. python爬虫国内外研究现状
  15. 网页制作中PS图像处理的应用
  16. OpenCascade Primitives BRep-Torus
  17. 提取单元格中某字符最后出现位置之前的数据
  18. 学习中的一些笔记,不懂的时候再来翻翻(持续更新)
  19. mumu的adb_MuMu进行adb操作
  20. 电子封装行业市场专项调查分析

热门文章

  1. word度量单位无效_【一定要看】这篇Word毕业论文排版全攻略,25个技能请收藏好~...
  2. html引用单文件组件,webpack入坑之旅(五)加载vue单文件组件_html/css_WEB-ITnose
  3. thymeleaf点击onclick事件
  4. layui的table常用方法
  5. 【codevs1116】四色问题
  6. oracle alert.log查找,oracle alert.log位置
  7. 三种动态创建元素区别
  8. java static 变量存在哪_Java中的静态方法和静态变量存储在哪里?
  9. 数据库的四大事务特性
  10. OpenGL基础26:Assimp库