zoukankan      html  css  js  c++  java
  • Partition List解题报告

    题目意图:把一个linked list根据某一个给定的值分为小于该值和大于等于该值的两个部分。

    思路:1.由于不确定左右两个部分是否有点,两边分别需要建立一个dummy node

       2.建立了4个新的node,左右dummy和左右的tail。 注意:dummy是作为一个虚拟的头,用于返回时候用的。

        对于左右两边分别建立一个leftTail pointer 和 rightTail pointer 分别记录当前两个list的尾巴。这样每次拿到一个新的点current,判断大小后可以直接加到相应的尾巴处。

       3.对于右边部分的最后一个点,尾巴节点的next很可能不为空,所以要对其进行rightTail->next = null 的处理

    九章代码:

     1 public class Solution {
     2     public ListNode partition(ListNode head, int x) {
     3         if (head == null) {
     4             return null;
     5         }
     6         
     7         ListNode leftDummy = new ListNode(0);
     8         ListNode rightDummy = new ListNode(0);
     9         ListNode left = leftDummy, right = rightDummy;
    10         
    11         while (head != null) {
    12             if (head.val < x) {
    13                 left.next = head;
    14                 left = head;
    15             } else {
    16                 right.next = head;
    17                 right = head;
    18             }
    19             head = head.next;
    20         }
    21         
    22         right.next = null;
    23         left.next = rightDummy.next;
    24         return leftDummy.next;
    25     }
    26 }
  • 相关阅读:
    常见的HTTP状态码有哪些?
    使用Hbuild打包APP
    Android APK反编译
    小程序|页面跳转的方法
    vi/vim 命令
    webpack学习笔记
    egg框架学习笔记
    IOS弹出系统键盘后,页面不恢复
    js上传文件
    webpack学习笔记
  • 原文地址:https://www.cnblogs.com/jiangchen/p/5398166.html
Copyright © 2011-2022 走看看