[LeetCode][JavaScript]Palindrome Linked List

來源:互聯網
上載者:User

標籤:

Palindrome Linked List

Given a singly linked list, determine if it is a palindrome.

Follow up:
Could you do it in O(n) time and O(1) space?

https://leetcode.com/problems/palindrome-linked-list/

 

 

 

 

判斷單鏈表是否為迴文,要求時間複雜度O(n),空間複雜度O(1)。

如果對空間複雜度沒有要求,有兩種簡單的做法。

一種是開個數組,把鏈表裡的值挨個塞進去,然後雙指標。

還有一種是做一輪遍曆,把單鏈表變成雙鏈表(javasrcipt可以修改執行個體化的對象), 然後雙指標。

 

時間複雜度O(n),空間複雜度O(1)的解法:

1.第一輪遍曆用快慢指標(快指標每次走兩步,慢指標每次走一步)尋找中點 -> O(n)

2.反轉後半段鏈表 -> O(n/2)

3.比較 -> O(n/2)

合起來時間還是O(n)。

你確定這是easy?

 1 /** 2  * Definition for singly-linked list. 3  * function ListNode(val) { 4  *     this.val = val; 5  *     this.next = null; 6  * } 7  */ 8 /** 9  * @param {ListNode} head10  * @return {boolean}11  */12 var isPalindrome = function(head) {13     //find middle14     var slow = head, fast = head, cacheHead = head;15     while(fast !== null && fast.next !== null){16         slow = slow.next;17         fast = fast.next.next;18     }19 20     //reverse link list21     var list2Head = new ListNode("head"), tmp;22     while(slow !== null){23         tmp = slow;24         slow = slow.next;25         tmp.next = list2Head.next;26         list2Head.next = tmp;27     }28 29     //judge palindrom30     var list1 = cacheHead, list2 = list2Head.next;31     for(; list2 !== null; list1 = list1.next, list2 = list2.next){32         if(list1.val !== list2.val){33             return false;34         }35     }36     return true;37 };

 

 

 

 

[LeetCode][JavaScript]Palindrome Linked List

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.