LeetCode刷题:面试题 02.04. 分割链表
2024-01-07 19:43:05
题目:
是否独立思考解决:否,完全没有思路,在参考解题思路后,仍然没有解决出来,以后刷题过程没有思路可以参考别人的解题思路,但是出现问题一定要多加思考,不能一心想着通过为标准,照着别人的代码抄
解题思路:既然题目要求比目标值小的数要排在前面,比目标值大的数不动,那么直接分为两个链表small与large,遍历head链表之后,比目标值小的值就放在small中,比目标值大的值就放在large中
解题代码:
class Solution {
public ListNode partition(ListNode head, int x) {
if(head==null){return null;}
ListNode smallhead = new ListNode(0);//创建头结点,并保持头结点不动是指向标
ListNode small = smallhead;//创建节点指向节点方便后续节点的存储与移动
ListNode largehead = new ListNode(0);
ListNode large = largehead;
while(head!= null){
if(head.val<x){//如果链表中的值比目标值小则把,链表的值放入small链表中,并向后移动一位方便存储下一位
small.next = head;
small=small.next;
}else{
large.next = head;
large =large.next;
}
head = head.next;//链表第一个值存入small或者large后向后遍历
}
small.next=largehead.next;//head遍历完后,small与large要拼接起来,记得因为我们large的头结点是我们开始定义的 new ListNode(0);所以我们要指向头结点的下一位
large.next=null;
return smallhead.next;
}
}
文章来源:https://blog.csdn.net/weixin_46139028/article/details/135442834
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!