lintcode :Partition List 链表划分
题目:
链表划分
给定一个单链表和数值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)分成三个链表的过程是一致的:以左小链表为例依次遍历原链表的每一个节点cur,当cur->data<pivot时,把cur取出, ...
- Algorithm:C++语言实现之链表相关算法(链表相加、链表的部分翻转、链表划分、链表去重、重复元素全部删除)
Algorithm:C++语言实现之链表相关算法(链表相加.链表的部分翻转.链表划分.链表去重.重复元素全部删除) 目录 一.链表 1.1.链表相加 1.2.链表相加 2.1.链表的部分翻转 2.2. ...
- LintCode Python 简单级题目 96.链表划分
原题描述: 给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前. 你应该保留两部分内链表节点原有的相对顺序. 您在真实的面试中是否遇到过这个题? Yes 样例 给定链表 1- ...
- LeetCode Partition List(链表分段)
题意:给出一个单链表,有参数的数x.将比x小的数排在比x大的数据后面 思路:类似于快速排序的分段处理.为了简单操作,在单链表前加个头结点.注意,在处理时,如果当前处理结点与被替换结点为同一结点结,两个 ...
- python链表划分_《Python自然语言处理》——1.2 近观Python:将文本当做词链表-阿里云开发者社区...
本节书摘来自异步社区<Python自然语言处理>一书中的第1章,第1.2节,作者[美]Steven Bird,Ewan Klein,Edward Loper, 陈涛,张旭,崔杨,刘海平 译 ...
- lintcode:删除链表中指定元素
题目 删除链表中等于给定值val的所有节点. 样例 给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1-> ...
- leetcode 763. Partition Labels | 763. 划分字母区间(双指针)
题目 https://leetcode.com/problems/partition-labels/ 题解 将问题转化成线段分割问题:找到所有可以切的点,使得每一个线段都不会被切到 class Sol ...
- 搞懂单链表常见面试题
搞懂单链表常见面试题 Hello 继上次的 搞懂基本排序算法,这个一星期,我总结了,我所学习和思考的单链表基础知识和常见面试题,这些题有的来自 <剑指 offer> ,有的来自<程序 ...
- 在单链表写入一组数据代码_链表常见操作和15道常见面试题
什么是单链表 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer),简单来说链表并不像数组那样 ...
最新文章
- Fitnesse测试系列--如何设置SetUp文件
- powerDesigner 正向工程生成sql注释问题 (mysql注释问题)
- java怎么导入一个项目到eclipse
- C#线程--5.0之前时代(一)--- 原理和基本使用
- 可视化图形(一):散点图-scatter()
- Revenue Cloud答疑
- 开源 | CVPR 2021无需向量监督的矢量图生成算法
- CSS 背景附着 background-attachment属性
- python中的numpy模块和pandas模块的区别_python的numpy模块- 01.pandas基本数据类型
- 20190825 On Java8 第十二章 集合
- Oracle P6培训系列:02登录
- java 工作流引擎调研总结
- 计算机水平等级全称,全国计算机等级考试介绍
- ts视频合并---P站
- 删除windows默认共享
- 在线遥感影像与地图集数据下载搜集
- 陀螺仪工作原理及创新应用
- 介绍一个java的Excel处理工具
- Android MVP 架构设计 (一)
- BigSur下Safari14.1.1安装油猴插件(Tampermonkey)
热门文章
- 如何对加载的数个模型只进行transform呢
- mysql 主机类型_实现在别的电脑上访问主机的mysql
- python财务报表预测股票价格_机器学习股票价格预测从爬虫到预测-数据爬取部分...
- xampp mysqli_query and后的条件不行_Java笔记不用!null作为判空条件
- python 中的真值表
- LeetCode:63. 不同路径 II
- 百练OJ:2388:寻找中位数
- 2020 5月 每日花语
- 信息系统项目管理师需要准备多久?备考技巧分享
- JVM虚拟机总结 内存分析及调试