[LeetNode]Sort List
                                            
 1729 단어  list
                    
사고방식: 분치+귀속.
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
private:
    int getlen(ListNode *head)
    {
        ListNode *p=head;
        int len=0;
        while(p)
        {
            len++;
            p=p->next;
        }
        return len;
    }
    ListNode* merge(ListNode *head1,ListNode *head2)
    {
        ListNode *p=head1,*q=head2,*head=NULL,*cur=NULL;
        while(p&&q)
        {
            if(p->val<=q->val)
            {
                if(head==NULL) head=cur=p;
                else 
                {
                    cur->next=p;
                    cur=p;
                }
                p=p->next;
            }
            else
            {
                if(head==NULL) head=cur=q;
                else 
                {
                    cur->next=q;
                    cur=q;
                }
                q=q->next;
            }
        }
        if(p) cur->next=p;
        if(q) cur->next=q;
        return head;
    }
public:
    ListNode *sortList(ListNode *head) {
        int len=getlen(head);
        if(len==0||len==1) return head;
        ListNode *p,*q,*r;
        p=r=head;
        int halflen=len>>1;
        for(int i=0;i<halflen-1;i++) r=r->next;
        q=r->next;
        r->next=NULL;
        p=sortList(p);
        q=sortList(q);
        ListNode *newhead=merge(p,q);
        return newhead;
    }
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[SwiftUI]List화한 CoreData를 가로 스와이프로 행 삭제하는 방법상당히 조사했지만 일본어 자료가 없었기 때문에 비망록으로 남겨 둔다. 아래와 같이 CoreData를 참조한 리스트를 가로 스와이프로 삭제하고 싶었다. UI 요소뿐만 아니라 원본 데이터 당 삭제합니다. 잘 다른 페이지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.