[Leetcode] 21. Merge Two Sorted Lists

Algorithm|2021. 7. 24. 20:10
반응형

Identifying the Problem

두 linked list 를 합치고, 오름차순 정렬하기

 

제한조건

  • 한 노드의 길이는 50이고
  • 노드안의 개별값은 -100 ~ 100 이다.
  • 각 노드는 이미 오름차순 정렬 되어있는 상태이다.

Organizing thoughts

1. 둘 중 하나가 빈 노드라면, 반대 노드를 출력한다.

2. 정답 노드를 생성해 l1 , l2의 값을 비교하며 작은 것부터 채워 넣는다.

Sourcecode

struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2)
{
struct ListNode answer;
    answer.next = NULL;
struct ListNode * ans = &answer;
    
if(l1 == 0) //1
    return l2;
else if (l2 ==0)
    return l1;

while(l1!=0 || l2!=0) //2 둘다 null이면 끝난거임
{
   if(l1->val <= l2->val )
   {
    ans->next = l1;
    l1 = l1->next;
   }
    else
   {
    ans->next = l2;
    l2 = l2->next;
   }
   
    ans = ans-> next;
    
    if(l1==0)
    {
     ans->next = l2;
     break;
    }
    
    else if(l2==0)
    {
     ans->next = l1;
     break;
    }
    
   
}
    
    
    
     
    
    return answer.next;
    
}

Mistake

없음

New things learned

이해가 안가면 그림을 그려보자
반응형

'Algorithm' 카테고리의 다른 글

[Leetcode] 27. Remove Element  (0) 2021.07.25
[Leetcode] 26. Remove Duplicates from Sorted Array  (0) 2021.07.25
[Leetcode] 14. Longest Common Prefix  (0) 2021.07.24
[Leetcode] 13. Roman to Integer  (1) 2021.07.20
[Leetcode] 20. Vaild Parentheses  (0) 2021.07.20

댓글()