zoukankan      html  css  js  c++  java
  • LeetCode:分割链表【86】

    LeetCode:分割链表【86】

    题目描述

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

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

    示例:

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

    题目分析

      这道题有总体思路是从头到尾扫描一次链表,将那些小于的节点放在一条链表上,大的放到一条链表上,最后两条一拼接即可。

      由于题目给的条件宽泛,我们可以直接创建新的节点,也可以使用断链法来让节点重新指向。

    Java题解

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
      public  ListNode partition(ListNode head, int x) {
            ListNode less =new ListNode(0);
            ListNode over =new ListNode(0);
    
            ListNode ptr = head;
            ListNode ptrLess = less;
            ListNode ptrOver = over;
          
            while(ptr!=null)
            {
                if(ptr.val<x) {
                    ptrLess.next = new ListNode(ptr.val);
                    ptrLess=ptrLess.next;
                }else{
                    ptrOver.next=new ListNode(ptr.val);
                    ptrOver=ptrOver.next;
                }
                ptr=ptr.next;
            }
            ptrLess.next=over.next;
            return less.next;
        }
    }
  • 相关阅读:
    c++爱问的面试问题
    Ognl底层使用
    [勘探开发]成绩,全栈开发,健全&amp;借贷
    FMS4
    Flex远程调用机制RemoteObject应用技巧
    Flex开发框架cairngorm入门实例
    RC1意思
    获取JAVA[WEB]项目相关路径的几种方法
    排序算法
    jQuery Validate
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9931834.html
Copyright © 2011-2022 走看看