劍指offer-js編寫-鏈表

來源:互聯網
上載者:User

標籤:eve   reverse   接收   com   nts   一個   new   倒數   思想   

(1)輸入一個鏈表,從尾到頭列印鏈表每個節點的值。

 

思路:用一個數組來接收列印的鏈表,鏈表的結構已經給出。

 

/*function ListNode(x){

 

    this.val = x;

 

    this.next = null;

 

}*/

 

function printListFromTailToHead(head)

{

    var arr=[];

    while(head){

        arr.unshift(head.val);

        head=head.next;

    }

    return arr;

}

 

(2)

輸入一個鏈表,輸出該鏈表中倒數第k個結點。

function FindKthToTail(head, k)

{

    var arr=[];

    while(head)

        {

            arr.push(head);

            head=head.next;  

        }

    if(arr.length==0 || k>arr.length){return false;}

    return arr[arr.length-k];

}

(3)輸入一個鏈表,反轉鏈表後,輸出鏈表的所有元素。

思路:建立一個頭結點,遍曆原鏈表,把每個節點用頭結點插入到建立鏈表中。最後,建立的鏈表就是反轉後的鏈表。

function ReverseList(pHead)  

{

    var pre = null;

    var next = null;     

    while(pHead){

        next = pHead.next;   

        pHead.next = pre;

        pre = pHead;

        pHead = next;

    }

    return pre;

}

(4)輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。

function Merge(pHead1, pHead2)
{
     if (pHead1 == null || pHead2 == null) {
        return pHead1 || pHead2;
    }
      
    var head = null;
      
    if (pHead1.val < pHead2.val) {
        head = pHead1;
        head.next = Merge(pHead2,pHead1.next)
    }
    else {
        head = pHead2;
        head.next = Merge(pHead1, pHead2.next);
    }
    return head;
    
}

(5)輸入一個複雜鏈表(每個節點中有節點值,以及兩個指標,一個指向下一個節點,另一個特殊指標指向任意一個節點),返回結果為複製後複雜鏈表的head。

遞迴思想:把大問題轉化若干子問題 此題轉化為一個頭結點和除去頭結點剩餘部分,剩餘部分操作和原問題一致

 function RandomListNode(x){
    this.label = x;
    this.next = null;
    this.random = null;
}
function Clone(pHead)
{
    if(!pHead){
        return null;
    }
    var CloneHead=new RandomListNode(pHead.label);
    CloneHead.label=pHead.label;
    CloneHead.random=pHead.random;
     
    CloneHead.next=Clone(pHead.next);
    return CloneHead;
}

 

劍指offer-js編寫-鏈表

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.