1. 程式人生 > 其它 >js獲取中文首字母

js獲取中文首字母

迭代

class Solution {
    public ListNode oddEvenList(ListNode head) {

        if (head == null){
            return head;
        }

        /**
         * 類似於《86. 分割連結串列》,奇數位置的節點不動,將偶數位置的節點全部放到最後面,原地完成
         */
        ListNode prev = new ListNode(-1);
        prev.next = head;
        ListNode cur = head;
        ListNode last = cur;
        int size = 1;

        while (last.next != null){

            last = last.next;
            size++;
        }

        /**
         * 使用size和for迴圈來遍歷,因為需要判斷索引的奇偶性,不能用while迴圈
         */
        for (int i = 1; i <= size; i++) {

            if (i % 2 != 0){

                prev = cur;
                cur = cur.next;
            }
            else {

                /**
                 * 將節點放到最後,還要維護下last
                 * 如果這是最後一個節點,就不用判斷了
                 */
                if (cur.next == null){
                    break;
                }

                prev.next = cur.next;
                last.next = cur;
                last = last.next;
                cur = prev.next;
            }
        }

        /**
         * 最終的last要指向null,頭節點始終是奇數不用動
         */
        last.next = null;

        return head;
    }
}

/**
 * 時間複雜度 O(n)
 * 空間複雜度 O(1)
 */

優化1——不用單獨判斷奇偶

class Solution {
    public ListNode oddEvenList(ListNode head) {

        if (head == null || head.next == null){
            return head;
        }

        /**
         * 先保證至少有兩個節點,分別作為奇連結串列和偶連結串列的頭節點
         * 遍歷時奇節點指向下一個偶節點的next,偶節點指向下一個奇節點的next,完成一輪節點分離
         */
        ListNode oddHead = head;
        ListNode evenHead = head.next;
        ListNode odd = oddHead;
        ListNode even = evenHead;

        /**
         * 每當判斷一個節點的next是否為空時,一定要先保證自己不為空
         */
        while (even != null && even.next != null){

            odd.next = even.next;
            odd = odd.next;
            even.next = odd.next;
            even = even.next;
        }

        odd.next = evenHead;

        return oddHead;
    }
}

/**
 * 時間複雜度 O(n)
 * 空間複雜度 O(1)
 */

https://leetcode-cn.com/problems/odd-even-linked-list/