반응형
Github
문제 링크
풀이
이번 문제는 링크드 리스트 문제로 탐색과 삽입을 모두 물어보는 문제입니다.
0과 0 사이의 숫자를 합한 노드로 링크르 리스트를 생성해야 합니다.
노드의 값이 0이 아니라면 sum 변수에 노드의 val을 더합니다.
노드가 0이라면 결과 링크드 리스트에 sum 값으로 노드를 추가하고 sum을 0으로 설정합니다.
input 링크드 리스트의 next가 nil일 때까지 위 과정을 반복합니다.
전체 코드
더보기
/**
* Definition for singly-linked list.
* public class ListNode {
* public var val: Int
* public var next: ListNode?
* public init() { self.val = 0; self.next = nil; }
* public init(_ val: Int) { self.val = val; self.next = nil; }
* public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
* }
*/
class Solution {
func mergeNodes(_ head: ListNode?) -> ListNode? {
var result: ListNode? = nil
var tail: ListNode? = nil
var sum: Int = 0
var inputCursor: ListNode? = head?.next
while let cur = inputCursor {
if cur.val == 0 {
if result == nil {
result = ListNode(sum)
tail = result
} else {
tail!.next = ListNode(sum)
tail = tail!.next
}
sum = 0
} else {
sum += cur.val
}
inputCursor = cur.next
}
return result
}
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형