算法:分离链表为两部分,小于某个值都在左边,大于等于某个值在右边 Partition List
题目
86. Partition List
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.
Example:
Input: head = 1->4->3->2->5->2, x = 3
Output: 1->2->2->4->3->5
解答
分离链表,可以初始化另个链表,一个都小于某个值,一个大于等于某个值,最后拼接起来即可。这里需要注意:最后一个节点的next需要设置为null,否则会导致死循环。或者每个节点都根据val重新创建一个避免这种问题。
重新定义链表,用于打印输出
package common;public class ListNode {public int val;public ListNode next;public ListNode(int val) {this.val = val;}static public ListNode listNodeWithIntArray(int[] input) {ListNode head = new ListNode(0);ListNode node = head;for (int i: input) {ListNode newNode = new ListNode(i);node.next = newNode;node = node.next;}return head.next;}@Overridepublic String toString() {StringBuilder sb = new StringBuilder();ListNode node = this;while (node != null) {sb.append(node.val).append("-->");node = node.next;}return sb.append("Null").toString();}@Overridepublic boolean equals(Object obj) {if (this == obj) {return true;}return false;}
}
算法实现
package linkedlist;import common.ListNode;// https://leetcode.com/problems/partition-list/
public class PartitionList {public ListNode partition(ListNode head, int x) {// check edgeif (head == null || head.next == null) {return head;}ListNode smallNode = new ListNode(0);ListNode smallHead = smallNode;ListNode bigNode = new ListNode(0);ListNode bigHead = bigNode;while (head != null) {if (head.val < x) {smallNode.next = head;smallNode = smallNode.next;} else {bigNode.next = head;bigNode = bigNode.next;}head = head.next;}// warning: need to set last next to null, otherwise it will infinite loop.bigNode.next = null;smallNode.next = bigHead.next;return smallHead.next;}
}
算法:分离链表为两部分,小于某个值都在左边,大于等于某个值在右边 Partition List相关推荐
- html div左中右布局,求助css。 一个div包含两个div,左右布局,左边css宽30%,右边div宽70%。高度均自...
求助css. 一个div包含两个div,左右布局,左边css宽30%,右边div宽70%.高度均自以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让 ...
- 2. 输入若干个学生信息(包括学号、姓名和某科成绩),输入学号为0时输入结束,建立一个单向链表,再输入一个成绩值,将成绩大于等于该值的学生信息输出。 输入输出示例: 1 Zhang 78 2 Wang
输入若干个学生信息(包括学号.姓名和某科成绩),输入学号为0时输入结束,建立一个单向链表,再输入一个成绩值,将成绩大于等于该值的学生信息输出. 输入输出示例: 1 Zhang 78 2 Wang 80 ...
- 算法练习day10——190328(根据指定值划分单链表、复制含有rand指针节点的链表、两个单链表相交)
1.将单向链表按某值划分成左边小. 中间相等. 右边大的形式 [题目] 给定一个单向链表的头节点head, 节点的值类型是整型, 再给定一个整数pivot. 实现一个调整链表的函数, 将链表调整为左部 ...
- 数据结构与算法之复制含有随机指针节点的链表和两个链表相交的一系列问题
数据结构与算法复制含有随机指针节点的链表和两个链表相交的一系列问题 目录 复制含有随机指针节点的链表 两个链表相交的一系列问题 1. 复制含有随机指针节点的链表 题目概述 思路:创建一个HashMap ...
- 借鉴快速排序的思想,实现算法将整型数组a[0...n]分成两块,使得第一块元素均大于等于0,第二块的元素均小于0,要求算法原地工作且时间复杂度为O(n)
题目:借鉴快速排序的思想,实现算法将整型数组a[0...n]分成两块,使得第一块元素均大于等于0,第二块的元素均小于0,要求算法原地工作且时间复杂度为O(n) 完整代码实现: #include< ...
- java数据接口之链表_Java数据结构和算法之链表
三.链表 链结点 在链表中,每个数据项都被包含在'点"中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LI ...
- 算法题解 —— 链表(6-10)
内容来源于自己的刷题笔记,对一些题目进行方法总结,用 java 语言实现. 6. 环形单链表的约瑟夫问题: 题目描述: 输入:一个环形单向链表的头节点 head 和报数的值 m 返回:最后生存下来的节 ...
- 一文通数据结构与算法之——链表+常见题型与解题策略+Leetcode经典题
文章目录 1 链表 1.1 常见题型及解题策略 1.1.1 LeetCode中关于链表的题目有以下五种类型题: 1.1.2 解题策略 1.2 链表的基本内容 1.2.1 链表的基本结构: 1.2.2 ...
- 【C语言】单向链表排序、合并、逆序、分离(链表的头节点不储存数据)
一.排序 编写程序,在第1题(第1题:编写程序,建立2个带头结点单链表,输入若干整数将正整数插入第1个单链表,将负整数插入第2个单链表,插入前和插入后单链表保持递增或相等次序,显示2个单链表,最后销毁 ...
- 语言zzuli链表遍历_趣味图解算法之链表
阅读本文约需要10分钟,您可以先关注我们或收藏本文,避免下次无法找到. 之前我们通过趣味图解法为大家介绍了二分查找的算法,今天我们一起来学习日常工作中经常能用到的算法链表. 成哥就是通过这个算法解决了 ...
最新文章
- CUDA Pro:通过向量化内存访问提高性能
- Selenium Web 自动化 - 如何找到元素
- tornado 学习笔记15 _ServerRequestAdapter分析
- 使用LogKit进行日志操作
- 转载:python pyppeteer手动、离线安装 chromium
- Linux-grep命令
- 2021肿瘤学,所有SCI期刊都在这里
- android Camera 拍照的两个问题
- 2022中国私域流量管理研究报告
- codeblocks哪个字体最舒服_如果给你一百万让你放弃一种美食永远不吃,你会放弃哪个?...
- 查看uboot变量地址_华为FIT AP通过Uboot切换FAT模式
- 绕过IceSword文件检测的Trojan.Win32.Mnless.zpc/ojj6erv.sys
- 定时删除虚拟服务器快照,ESXi6.0 设置自动删除快照脚本及计划任务
- T293037 [传智杯 #5 练习赛] 白色旅人
- mac中实用的录音软件有哪些?
- 【计算机二级Python】Python全部内置函数解析与使用
- MyBatis学习笔记(六)——高级查询之一对多映射
- 计算机硬件故障可分为哪几类,计算机故障可分为硬件和非硬件故障
- word自动设置表格格式
- 下三角矩阵的压缩存储
热门文章
- python 字典排序成绩_原来python中dict()的高级用法可以这样实现!真是让我长了见识...
- java int stack_java stack总结
- 转自weiphone]在美做开发多年,写给国内apple开发新手的一些心得,无教程
- asp.net ajax updatepanel中textbox 乱码问题 解决方案
- IntelliJ IDEA安装lombok
- Appium Server
- ACM-经典DP之Monkey and Banana——hdu1069
- JavaScript_高程三_01
- 运用incremental backup恢复归档GAP的DG-上篇
- 活用锚点解决的问题(由一个简单应用想到的许多)