LeetCode 풀기 - 두 개의 숫자 더하기
9946 단어 javascript
의문
두 개의 음이 아닌 정수를 나타내는 두 개의 비어 있지 않은 연결 목록이 제공됩니다. 숫자는 역순으로 저장되며 각 노드에는 단일 숫자가 포함됩니다. 두 숫자를 더하고 합을 연결 목록으로 반환합니다.
숫자 0 자체를 제외하고 두 숫자에 선행 0이 포함되어 있지 않다고 가정할 수 있습니다.
예 1:
Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807.
예 2:
Input: l1 = [0], l2 = [0]
Output: [0]
예 3:
Input: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
Output: [8,9,9,9,0,0,0,1]
제약:
Input: l1 = [2,4,3], l2 = [5,6,4]
Output: [7,0,8]
Explanation: 342 + 465 = 807.
Input: l1 = [0], l2 = [0]
Output: [0]
Input: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
Output: [8,9,9,9,0,0,0,1]
갑시다!
를 사용하여 해결합니다.
P - 두 개의 음이 아닌 정수를 나타내는 비어 있지 않은 두 개의 연결 목록.
R - 추가된 두 숫자의 연결 목록 반환
E - 질문에 의해 제공된 예. (위 참조)
P - 아래 참조
노드 목록에 대해 알기 전에 ...
var addTwoNumbers = function(l1, l2) {
const reverseOfL1 = reverseArr(l1)
const reverseOfL2 = reverseArr(l2)
let list = []
let carry = 0
for (let i=0; i<l1.length; i++) {
const sum = reverseOfL1[i] + reverseOfL2[i]
if (sum > 9) {
list.push(sum%10+carry)
carry = 1
} else {
list.push(sum+carry)
carry = 0
}
}
return list
}
function reverseArr(arr) {
return arr.reduce((newArr,num) => {
newArr.unshift(num)
return newArr
}, [])
}
내 실수를 깨닫고 NodeList 및 Linked Lists를 읽습니다. 아래 답변:
let addTwoNumbers = function(l1, l2) {
let dummyHead = new ListNode(0);
let p1 = l1;
let p2 = l2;
let current = dummyHead;
let carry = 0;
while (p1 !== null || p2 !== null) {
let x = (p1 !== null) ? p1.val : 0;
let y = (p2 !== null) ? p2.val : 0;
let sum = x + y + carry;
carry = Math.floor(sum / 10);
current.next = new ListNode(sum % 10);
current = current.next;
if (p1 !== null) {
p1 = p1.next;
}
if (p2 !== null) {
p2 = p2.next;
}
}
if (carry > 0) {
current.next = new ListNode(1);
}
return dummyHead.next;
};
결론
기억하세요... 즐거운 코딩, 친구들! =)
출처
Reference
이 문제에 관하여(LeetCode 풀기 - 두 개의 숫자 더하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/phariale/solving-leetcode-add-two-numbers-6bc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)