その数に1を加えます(リンクリストで包まれます).



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] 
    
    ディスカッションボックスであなたのアプローチを話し合いましょう.
    読書ありがとう.