Leetcode Java Double a Number Represented as a Linked List
업데이트:
문제
코드
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode doubleIt(ListNode head) {
if (head.val > 4) {
head = new ListNode(0, head);
}
for (ListNode temp = head; temp != null; temp = temp.next) {
temp.val = (temp.val * 2) % 10;
if (temp.next != null && temp.next.val > 4) {
temp.val++;
}
}
return head;
}
}
결과
설명
-
head의 값들은 이은 정수 값을 두 배로 증가시킨 값을 지닌 ListNode로 반환하는 문제이다.
-
head의 val 값이 4보다 커서 2배를 곱한 값이 자릿수가 증가하는 경우, head에 값은 0 next ListNode는 head를 넣어 초기화한 새 ListNode를 넣어준다.
- temp에 head를 넣고 temp가 null이 아닐 때 까지 temp에 temp의 다음 ListNode를 넣어가면서 아래를 반복한다.
- temp의 val 값에 해당 값의 2배한 결과의 1의 자리수를 넣어준다.
- temp의 다음 ListNode가 null이 아니면서 temp의 다음 ListNode의 값이 4보다 큰 경우, temp의 val값을 증가시켜준다.
- 위의 반복을 통해 2배의 값으로 이루어진 head를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기