题目:

链表划分

给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。

你应该保留两部分内链表节点原有的相对顺序。

样例

给定链表 1->4->3->2->5->2->null,并且 x=3

返回 1->2->2->4->3->5->null

解题:

上面返回的结果好多不对的应该是: 1->2->2->3->4->5->null

想了好久不知道怎么搞,九章看到的程序,竟然搞两个链表链接起来。。。

Java程序:

/*** Definition for ListNode.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int val) {*         this.val = val;*         this.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 hereif(head == null) return null;ListNode leftDummy = new ListNode(0);ListNode rightDummy = new ListNode(0);ListNode left = leftDummy, right = rightDummy;while (head != null) {if (head.val < x) {left.next = head;left = head;} else {right.next = head;right = head;}head = head.next;}right.next = null;left.next = rightDummy.next;return leftDummy.next;}}

View Code

总耗时: 1573 ms

Python程序:

"""
Definition of ListNode
class ListNode(object):def __init__(self, val, next=None):self.val = valself.next = next
"""
class Solution:"""@param head: The first node of linked list.@param x: an integer@return: a ListNode """def partition(self, head, x):# write your code hereif head == None:return headlefthead = ListNode(0)righthead = ListNode(0)left = leftheadright = rightheadwhile head!=None:if head.val<x:left.next = head left = left.nextelse:right.next = headright = right.nexthead = head.nextright.next = Noneleft.next = righthead.nextreturn lefthead.next 

View Code

总耗时: 517 ms

和Java的有点小区别但是没有影响的。

lintcode :Partition List 链表划分相关推荐

  1. 链表划分为左小、中相等、右大

    解题思路:将一个链表分成三个链表,最后重新连接三个链表 (1)分成三个链表的过程是一致的:以左小链表为例依次遍历原链表的每一个节点cur,当cur->data<pivot时,把cur取出, ...

  2. Algorithm:C++语言实现之链表相关算法(链表相加、链表的部分翻转、链表划分、链表去重、重复元素全部删除)

    Algorithm:C++语言实现之链表相关算法(链表相加.链表的部分翻转.链表划分.链表去重.重复元素全部删除) 目录 一.链表 1.1.链表相加 1.2.链表相加 2.1.链表的部分翻转 2.2. ...

  3. LintCode Python 简单级题目 96.链表划分

    原题描述: 给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前. 你应该保留两部分内链表节点原有的相对顺序. 您在真实的面试中是否遇到过这个题? Yes 样例 给定链表 1- ...

  4. LeetCode Partition List(链表分段)

    题意:给出一个单链表,有参数的数x.将比x小的数排在比x大的数据后面 思路:类似于快速排序的分段处理.为了简单操作,在单链表前加个头结点.注意,在处理时,如果当前处理结点与被替换结点为同一结点结,两个 ...

  5. python链表划分_《Python自然语言处理》——1.2 近观Python:将文本当做词链表-阿里云开发者社区...

    本节书摘来自异步社区<Python自然语言处理>一书中的第1章,第1.2节,作者[美]Steven Bird,Ewan Klein,Edward Loper, 陈涛,张旭,崔杨,刘海平 译 ...

  6. lintcode:删除链表中指定元素

    题目 删除链表中等于给定值val的所有节点. 样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1-> ...

  7. leetcode 763. Partition Labels | 763. 划分字母区间(双指针)

    题目 https://leetcode.com/problems/partition-labels/ 题解 将问题转化成线段分割问题:找到所有可以切的点,使得每一个线段都不会被切到 class Sol ...

  8. 搞懂单链表常见面试题

    搞懂单链表常见面试题 Hello 继上次的 搞懂基本排序算法,这个一星期,我总结了,我所学习和思考的单链表基础知识和常见面试题,这些题有的来自 <剑指 offer> ,有的来自<程序 ...

  9. 在单链表写入一组数据代码_链表常见操作和15道常见面试题

    什么是单链表 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer),简单来说链表并不像数组那样 ...

最新文章

  1. Fitnesse测试系列--如何设置SetUp文件
  2. powerDesigner 正向工程生成sql注释问题 (mysql注释问题)
  3. java怎么导入一个项目到eclipse
  4. C#线程--5.0之前时代(一)--- 原理和基本使用
  5. 可视化图形(一):散点图-scatter()
  6. Revenue Cloud答疑
  7. 开源 | CVPR 2021无需向量监督的矢量图生成算法
  8. CSS 背景附着 background-attachment属性
  9. python中的numpy模块和pandas模块的区别_python的numpy模块- 01.pandas基本数据类型
  10. 20190825 On Java8 第十二章 集合
  11. Oracle P6培训系列:02登录
  12. java 工作流引擎调研总结
  13. 计算机水平等级全称,全国计算机等级考试介绍
  14. ts视频合并---P站
  15. 删除windows默认共享
  16. 在线遥感影像与地图集数据下载搜集
  17. 陀螺仪工作原理及创新应用
  18. 介绍一个java的Excel处理工具
  19. Android MVP 架构设计 (一)
  20. BigSur下Safari14.1.1安装油猴插件(Tampermonkey)

热门文章

  1. 如何对加载的数个模型只进行transform呢
  2. mysql 主机类型_实现在别的电脑上访问主机的mysql
  3. python财务报表预测股票价格_机器学习股票价格预测从爬虫到预测-数据爬取部分...
  4. xampp mysqli_query and后的条件不行_Java笔记不用!null作为判空条件
  5. python 中的真值表
  6. LeetCode:63. 不同路径 II
  7. 百练OJ:2388:寻找中位数
  8. 2020 5月 每日花语
  9. 信息系统项目管理师需要准备多久?备考技巧分享
  10. JVM虚拟机总结 内存分析及调试