两个链表生成相加链表
假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。
给定两个这种链表,请生成代表两个整数相加值的结果链表。
例如:链表 1 为 9->3->7,链表 2 为 6->3,最后生成新的结果链表为 1->0->0->0
/*
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
*
* @param head1 ListNode类
* @param head2 ListNode类
* @return ListNode类
*/
function addInList( head1 , head2 ) {
// write code here
let str1 = '';
let str2 = '';
let count1 = 0;
let count2 = 0;
while(head1){
str1 += head1.val;
head1 = head1.next;
count1++;
}
while(head2){
str2 += head2.val;
head2 = head2.next;
count2++;
}
let max = count1 > count2 ? count1: count2;
str1 = str1.padStart(max,'0')
str2 = str2.padStart(max,'0')
let f = 0 //进位
let cur = '' //暂存值
for(let i = max-1;i>=0;i--){
let tmp = Number(str1[i])+Number(str2[i]) + f;
f = Math.floor(tmp / 10);
cur = tmp % 10 + cur;
}
// 最后一位是否进位
cur = f ? `1${cur}` : cur;
var curs = new ListNode(-1);
var dummy = curs;
for(let i = 0;i<cur.length;i++){
var temp = new ListNode(cur[i]);
dummy.next = temp;
dummy = temp;
}
return curs.next;
}
// //翻转链表操作
// function reverseList(head){
// var pre = null
// var low = null
// while(head){
// low = head.next;
// head.next = pre;
// pre = head;
// head = low;
// }
// return pre;
// }
module.exports = {
addInList : addInList
};

浙公网安备 33010602011771号