• 首页

  • 归档

  • 标签

  • 分类

  • 友链
M S B l o g
M S B l o g

ms

获取中...

04
21
java
总结
问题

【力扣】分割链表

发表于 2021-04-21 • java 总结 数据结构 力扣 • 被 827 人看爆

题目:

编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。

示例:

输入: head = 3->5->8->5->10->2->1, x = 5
输出: 3->1->2->10->5->5->8

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/partition-list-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解:

只需要遍历链表的所有节点,小于x的放到一个小的链表中,大于等于x的放到一个大的链表中,最后再把这两个链表串起来即可。

 public ListNode partition(ListNode head, int x) {
	//小的链表的首元节点和头节点
        ListNode small = new ListNode(0);
        ListNode smallHead = small;
	
	//大的链表的首元节点和头节点
        ListNode large = new ListNode(0);
        ListNode larageHead = large;
	
	//遍历head链表
        while(head != null){
	    //判断head链表中值
            if(head.val < x){
		//如果值比x小,则将它放到小的链表
                small.next = head;
                small = small.next; 
            }else{
		//如果值大于等于x,则将它放到大的链表
                large.next = head;
                large = large.next;
            }
	    //继续循环下一个head节点
            head = head.next;
        }
	//将大小两个链表合并
        large.next = null;
        small.next = larageHead.next;
        return smallHead.next;
    }

分享到:
Java中的相除(/)和取余(%)
【力扣】删除中间节点
  • 文章目录
  • 站点概览
ms

MSms

⚓️HelloWorld⚓️

QQ Email RSS
看爆 Top5
  • MyBatis-Plus分页查询 5,937次看爆
  • @Autowired与@Resource的区别 4,755次看爆
  • feign远程调用及异步调用丢失请求头问题 4,526次看爆
  • spring cloud中OpenFeign整合Sentinel启动报错 4,424次看爆
  • Certbot查看证书过期时间,手动续期以及自动续期 3,302次看爆

Copyright © 2025 ms · 湘ICP备20015239号

Proudly published with Halo · Theme by fyang · 站点地图