add two linked list as integer
You have two numbers represented by a linked list, where each node contains a single digit. Write a function that adds the two numbers and returns the sum as a linked list.
EXAMPLE:
input: (3 -> 1 -> 5), (5 -> 9 -> 2)
output: 9 -> 0 -> 7
Analyze:
use two stacks to store the numbers in the list, and then the last number of the lists will be on the top of the stacks, we pop the stack and add the numbers, and save the result into the linked list.
Code:
public static LinkedList addList(Node h1, Node h2) {
//save the numbers in the list to stacks
Stack<Node> s1 = new Stack<Node>();
Stack<Node> s2 = new Stack<Node>();
while(h1 != null) {
s1.push(h1);
h1 = h1.next;
}
while(h2 != null) {
s2.push(h2);
h2 = h2.next;
}
//LinkedList saves the result
LinkedList list = new LinkedList();
int sum = 0;
int carry = 0;
while(!s1.empty() && !s1.empty()) {
sum = s1.pop().data + s2.pop().data + carry;
carry = sum / 10;
sum = sum % 10;
list.addFirst(sum);
}
while(!s1.empty()) {
sum = s1.pop().data + carry;
carry = sum / 10;
sum = sum % 10;
list.addFirst(sum);
}
while(!s2.empty()) {
sum = s1.pop().data + carry;
carry = sum / 10;
sum = sum % 10;
list.addFirst(sum);
}
// don't forget the carry
if (carry != 0) list.addFirst(carry);
return list;
}
http://blog.csdn.net/beiyeqing teng
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[SwiftUI]List화한 CoreData를 가로 스와이프로 행 삭제하는 방법상당히 조사했지만 일본어 자료가 없었기 때문에 비망록으로 남겨 둔다. 아래와 같이 CoreData를 참조한 리스트를 가로 스와이프로 삭제하고 싶었다. UI 요소뿐만 아니라 원본 데이터 당 삭제합니다. 잘 다른 페이지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.