zoukankan      html  css  js  c++  java
  • cc150 --链表分割

    题目描述

    编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前

    给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。

    设置两个链表头,遍历原链表,一个追加小数链表,一个追加大数链表,最后将小数链表粘到大数链表前边即为结果。

     1 public class Partition {
     2     public ListNode partition(ListNode head, int x) {
     3         // write code here
     4         ListNode small = new ListNode(-1);
     5         ListNode big = new ListNode(-1);
     6         ListNode smallHead = small;
     7         ListNode bigHead = big;
     8         while(head!=null){
     9             if(head.val<x){
    10                 small.next = head;
    11                 small = small.next;
    12                 head = head.next;
    13                 small.next = null;
    14             }
    15             else{
    16                 big.next = head;
    17                 big = big.next;
    18                 head = head.next;
    19                 big.next = null;           
    20             }
    21         }
    22         
    23         if(bigHead.next==null) return smallHead.next;
    24         if(smallHead.next==null) return bigHead.next;
    25         
    26         
    27         //连接2个
    28         ListNode cur = smallHead;
    29         while(cur.next!=null)
    30             cur = cur.next;
    31         cur.next = bigHead.next;
    32         return smallHead.next;
    33     }
    34 }
  • 相关阅读:
    解决方案
    项目管理
    项目管理
    产品经理
    产品经理
    产品经理
    产品经理
    vue学习面向对象,在项目中怎么用呢?
    vue表单验证不通过,依然能执行点击事件里面的代码?
    vue中js文件中export常见方法及使用
  • 原文地址:https://www.cnblogs.com/zle1992/p/9018446.html
Copyright © 2011-2022 走看看