LeetCode 21. 두 개의 질서정연한 체인 테이블 통합

1168 단어 LeetCode

차례로 돌아가다

func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
	if nil == l1 {
		return l2
	}
	if nil == l2 {
		return l1
	}

	if l1.Val < l2.Val {
		l1.Next = mergeTwoLists(l1.Next, l2)
		return l1
	} else {
		l2.Next = mergeTwoLists(l1, l2.Next)
		return l2
	}
}

me(문제가 있음) 비귀속 버전 구현


이 테스트의 용례는 도망갈 수 없고, 원인은 찾아내지 못했다.그러나 로컬 출력은 정확하고 논리도 문제없다
 :
[-9,3]
[5,7]
 
[-9,3,7]
 
[-9,3,5,7]
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
	if l1 == nil {
		return l2
	}
	if l2 == nil {
		return l1
	}

	result := l1
	r := result


	if l1.Val > l2.Val {
		result = l2
		l2 = l2.Next
		r = result
	} else {
		l1 = l1.Next
		r = result
	}

	for l1 != nil && l2 != nil {
		if l1.Val < l2.Val {
			result.Next = l1
			l1 = l1.Next
			result = result.Next
		} else {
			result.Next = l2
			l2 = l2.Next
			result = result.Next
		}
	}

	if l1 == nil && l2 != nil{
		for l2 != nil{
			result.Next = l2
			l2 = l2.Next
		}
	}

	if l1 != nil && l2 == nil{
		for l1 != nil{
			result.Next = l1
			l1 = l1.Next
		}
	}
 
	return r
}

좋은 웹페이지 즐겨찾기