その数に1を加えます(リンクリストで包まれます).
8995 ワード
LinkedListでラップされた番号に1を加えます
(Benefits of LinkedList: no limits for a number)
リンクされたリストを指定された番号(各キーは0から9までの数字を持つ)を示し、1にそれを追加するための関数を実装します.例- 7799のために、リンクリストは[ 7 , 8 , 9 , 9 ]です
1から7899に加えると7900が得られます
Input1: [7, 8, 9, 9]
Output1: [7, 9, 0, 0]
マイアプローチ
コード
//function converting nums in linkedList
function getLinkedList ( ...arr ) {
let nodesArray = [];
for( var index=0; index<arr.length; index++ ) {
nodesArray.push({
digit: arr[index],
next:null
})
}
for( var index = 0; index < nodesArray.length-1; index++ ) {
nodesArray[index].next = nodesArray[index+1];
}
if(nodesArray.length){
return nodesArray[0];
}
}
//prints the linkedList's digits in an Array.
function printList(list) {
let arr = [], node = list;
while(node != null) {
arr.push(node.digit);
node = node.next;
}
console.log(arr);
}
let list = getLinkedList(7, 8, 9, 9);
printList(list); // [7, 8, 9, 9]
let num =1;//number to be added
//function which will add one to the number
function addOne(_list) {
//to achieve backtracking calling function before implementation till end
if(_list.next != undefined){
addOne(_list.next);
}
_list.digit += num;
//borrow will be in case of sum 10 or greater than ten
if(_list.digit>10){
_list.digit = 10-_list.digit;
num = 1;
} else if(_list.digit=== 10){
_list.digit = 0;
num = 1;
} else {////borrow will be zero when sum is less than 10
num =0;
}
//to handle all nine case,
//example in case of 9999, answer will be 10000
if(list === _list && num!= 0 ){
//creating new node for the last borrow (1), in case of all nine
list = {
digit : num,
next: list
}
}
}
addOne(list);
printList(list); // [7, 9, 0, 0]
//in case of[9, 9, 9, 9], the output is [1,0,0,0,0]
ディスカッションボックスであなたのアプローチを話し合いましょう.読書ありがとう.
Reference
この問題について(その数に1を加えます(リンクリストで包まれます).), 我々は、より多くの情報をここで見つけました https://dev.to/aasthatalwaria/add-1-to-the-number-wrapped-in-linked-list-507gテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol