欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          PHP和Go如何進(jìn)行環(huán)路鏈表檢測

          鏈表中環(huán)的入口結(jié)點問題是一個超級經(jīng)典的問題,不管是在面試中,還是考研的過程中都是一個經(jīng)典問題。通常的公認(rèn)解法就是雙指針(快慢指針)的解法,當(dāng)然這已經(jīng)的老生長談的了。今天我們就來介紹介紹。

          給定一個鏈表,如果它是有環(huán)鏈表,實現(xiàn)一個算法返回環(huán)路的開頭節(jié)點。 有環(huán)鏈表的定義:在鏈表中某個節(jié)點的next元素指向在它前面出現(xiàn)過的節(jié)點,則表明該鏈表存在環(huán)路。

          解題思路 1

          遍歷鏈表,同時將每次的結(jié)果放到 map 中,如果有元素重復(fù)出現(xiàn),則是有環(huán)形鏈表

          /**  * Definition for singly-linked list.  * type ListNode struct {  * Val int * Next *ListNode  * }  */ func detectCycle(head *ListNode) *ListNode {     visited := make(map[*ListNode]struct{}, 1)     work := head      for work != nil {         _, ok := visited[work]         if ok {             return work         } else {             visited[work] = struct{}{}         }         work = work.Next     }      return nil}

          解題思路 2

          快慢指針求解:我們定義兩個指針,一快一滿。慢指針每次只移動一步,而快指針每次移動兩步。初始時,慢指針在位置 head,而快指針在位置 head.next。這樣一來,如果在移動的過程中,快指針反過來追上慢指針,就說明該鏈表為環(huán)形鏈表。否則快指針將到達(dá)鏈表尾部,該鏈表不為環(huán)形鏈表。

          /**  * Definition for a singly-linked list.  * class ListNode {  * public $val = 0;  * public $next = null;  * function __construct($val) { $this->val = $val; }  * }  */class Solution {     /**      * @param ListNode $head * @return Boolean      */     function hasCycle($head) {         $fast = $head;         $slow = $head;          while ($fast != null && $fast->next != null) {             $fast = $fast->next->next;             $slow = $slow->next;             if ($fast === $slow) {                 return true;             }         }         return false;     }}

          推薦:《2021年P(guān)HP面試題大匯總(收藏)》《php視頻教程》

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號