LeetCode 328 홀수 짝수 링크 된 목록 (홀수 및 짝수에 모여 요소 목록)

문제의 의미는 : , 목록이 제공 패리티 응집에 따른 목록 엘리먼트 짝수 뒤에 위치 노드 앞의 노드 홀수 위치.

입력 : 2-> 1-> 3-> 5-> 6> 3-> 7-> NULL 
출력 : 2-> 3-> 6> 7-> 1-> 5-> 4-> NULL

분석 :

: 하나의 행동 재귀.

(1) 제 재귀 oddEvenList (헤드 -> 다음 -> 다음)이 케이스 (2)에있어서,리스트 -> (1) -> (같이 Recurse 결과 : 3-> 6> 7-> 5-> 4)

(2) 2 (짝수 비트 위치 제 재귀 결과) 5 (1)의 전방에 삽입되는, (3)의 앞의 (제 1 위치의 홀수 비트 같이 Recurse 결과)에 삽입

이 방법의 단점은,이 시간 복잡도 긍정 O (N)를 통해 각각의 순환 체인 길이를 필요로하고, 권장되지 않는다

/ ** 
 * 단독으로 링크 된 목록에 대한 정의. 
 * 구조체 {ListNode 
 * INT의 발; 
 * ListNode * 다음; 
 * ListNode INT (X) : 발 (x)는, 다음 (NULL) {} 
 *}; 
 * / 
클래스 솔루션 { 
공개 : 
    ListNode * oddEvenList (ListNode * 헤드) { 
        경우 (머리 == NULL || 머리 -> 다음 == NULL || 머리 -> 다음 -> 다음 == NULL) 반환 헤드; 
        ListNode * TMP = 머리; 
        INT LEN = 0; 
        동안 (TMP) { 
            TMP = TMP -> 다음; 
            ++ 렌; 
        } 
        ListNode * suf1 = 헤드 -> 다음; 
        ListNode * suf2 = oddEvenList (헤드 -> 다음 -> 다음); 
        머리 -> 다음 = suf2;
        경우 (LEN % 2 == 0) { 
            LEN = LEN (- 2) / 2 - 1; 
        } 
        다른 { 
            LEN = LEN (- 2) / 2; 
        } 
        TMP = suf2; 
        동안 (렌 -) { 
            TMP = TMP -> 다음; 
        } 
        suf1 -> 다음 = TMP -> 다음; 
        TMP -> 다음 = suf1; 
        머리를 반환; 
    } 
};

방법 2 : 홀수 비트 홀수 비트는 짝수 비트에도 짝수 비트 후 처음과 체인의 끝이 홀수 비트에서 비트.

/ ** 
 * 단독으로 링크 된 목록에 대한 정의. 
 * 구조체 {ListNode 
 * INT의 발; 
 * ListNode * 다음; 
 * ListNode INT (X) : 발 (x)는, 다음 (NULL) {} 
 *}; 
 * / 
클래스 솔루션 { 
공개 : 
    ListNode * oddEvenList (ListNode * 헤드) { 
        경우 (머리 == NULL) 반환 NULL; 
        ListNode * = 홀수 헤드; 
        ListNode *도 = 머리 -> 다음; 
        ListNode * evenhead = 머리 -> 다음; 
        반면 (심지어 && 짝수 -> 다음) { 
            홀수 -> 다음 = 홀수 -> 다음 -> 다음; 
            홀수 홀수 = -> 다음; 
            도 -> 다음 =도 -> 다음 -> 다음; 
            심지어 =도 -> 다음;
        홀수 -> 다음 = evenhead; 
        머리를 반환; 
    } 
};

  

추천

출처www.cnblogs.com/tyty-Somnuspoppy/p/12380065.html