C++LeetCode 구현(24.쌍 교환 노드)

[LeetCode]24.Swap Nodes in Pairs 쌍 으로 교환 노드
Given a linked list, swap every two adjacent nodes and return its head.
You may not modify the values in the list's nodes, only nodes itself may be changed.
Example:
Given
1->2->3->4
, you should return the list as
2->1->4->3.
이 문 제 는 어렵 지 않 고 기본 적 인 링크 조작 문제 로 우 리 는 각각 재 귀 와 교체 로 실현 할 수 있다.교체 실현 에 대해 서 는 Dummy 노드 를 구축 해 야 합 니 다.노드 를 연결 할 때 자신 을 어 지 럽 히 지 않도록 그림 을 그 리 는 것 이 좋 습 니 다.코드 는 다음 과 같 습 니 다.
해법 1:

class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        ListNode *dummy = new ListNode(-1), *pre = dummy;
        dummy->next = head;
        while (pre->next && pre->next->next) {
            ListNode *t = pre->next->next;
            pre->next->next = t->next;
            t->next = pre->next;
            pre->next = t;
            pre = t->next;
        }
        return dummy->next;
    }
};
재 귀적 인 서법 은 더욱 간결 해 졌 다.실제로 거 슬러 올 라 가 는 사상 을 이용 하여 링크 의 끝 에 옮 겨 다 닌 다음 에 마지막 두 개 를 교환 한 다음 에 순서대로 앞으로 교환 했다.
해법 2:

class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        if (!head || !head->next) return head;
        ListNode *t = head->next;
        head->next = swapPairs(head->next->next);
        t->next = head;
        return t;
    }
};
해법 3:

class Solution {
    public ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode newHead = head.next;
        head.next = swapPairs(newHead.next);
        newHead.next = head;
        return newHead;
    }
}
여기 서 C++실현 LeetCode(24.쌍 대 교환 노드)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 C++실현 쌍 대 교환 노드 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기