86. 分隔链表

知识点:链表;

题目描述

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。

你应当 保留 两个分区中每个节点的初始相对位置。

示例
输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]。 输入:head = [2,1], x = 2
输出:[1,2]

解法一:解析

可以分别定义两个链表,一个用来存储比x大的,一个用来存储比x小的,然后把大的接到小的后面。里面的注意就是最后要防止不是以null结尾的,即最后一个元素原链条没有断,就会形成环;

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode partition(ListNode head, int x) {
ListNode big = new ListNode(-1); //创建一个big链表;
ListNode bigHead = big;
ListNode small = new ListNode(-1); //创建一个small链表;
ListNode smallHead = small;
ListNode cur = head;
while(cur != null){
if(cur.val < x){
small.next = cur; //小于的接到小链表上;大的接到大链表上;
small = small.next;
}else{
big.next = cur;
big = big.next;
}
cur = cur.next;
}
small.next = bigHead.next; //大链表接到小链表上;
big.next = null;
//如果原链表最后一位是小的,那现在大链表的最后还指向之前的小元素,
//这样就形成了环,所以将其设置为null;
return smallHead.next;
}
}

时间复杂度:O(N);

空间复杂度:O(1);

最新文章

  1. Oracle计算两个时间戳相差秒数,精确到毫秒
  2. 【linux草鞋应用编程系列】_1_ 开篇_系统调用IO接口与标准IO接口
  3. RecyclerView 介绍 01
  4. 一个WebService Demo
  5. Borg Maze 分类: POJ 2015-07-27 15:28 5人阅读 评论(0) 收藏
  6. 门户网站架构Nginx+Apache+MySQL+PHP+Memcached+Squid
  7. SaaS系列介绍之七: SaaS模式分析(下)
  8. Linux系统下分割tomcat日志
  9. Node.js事件发射器
  10. JPA的Embeddable注解
  11. 扩展jquery easyui datagrid编辑单元格
  12. Swing学习篇 API之JButton组件
  13. Unity StrangeIoC HelloWorld
  14. GCC编译器原理(二)------编译原理一:目标文件
  15. python用matplotlib画折线图
  16. 【Android教程】Android用户系统管理
  17. [leetcode]158. Read N Characters Given Read4 II - Call multiple times 用Read4读取N个字符2 - 调用多次
  18. Django中cookie和session
  19. Oracle根据字段值找到表名和列名
  20. C# winfrom Datagridview表头样式和选中样式

热门文章

  1. CUDA 8的混合精度编程
  2. 接触追踪解决方案建立在UWB而不是蓝牙上
  3. 开发掉坑(二)前端静态资源 Uncaught SyntaxError: Unexpected token &lt;
  4. 【SQLite】教程07-C/C++上使用SQLite3
  5. centos 7查看系统网络情况netstat
  6. JMeter定时器种类+详细教程举例
  7. Netty 框架学习 —— 预置的 ChannelHandler 和编解码器
  8. 66.QT-线程并发、QTcpServer并发、QThreadPool线程池
  9. hdu 2604 递推 矩阵快速幂
  10. 【Azure 应用服务】Azure Function App 执行PowerShell指令[Get-Azsubscription -TenantId $tenantID -DefaultProfile $cxt]错误