中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

百度站長工具平臺登錄成都網(wǎng)站建設(shè)方案優(yōu)化

百度站長工具平臺登錄,成都網(wǎng)站建設(shè)方案優(yōu)化,建筑信息公開平臺,免費(fèi)商城網(wǎng)站建設(shè)給定一個鏈表的頭節(jié)點(diǎn) head ,返回鏈表開始入環(huán)的第一個節(jié)點(diǎn)。 如果鏈表無環(huán),則返回 null。 如果鏈表中有某個節(jié)點(diǎn),可以通過連續(xù)跟蹤 next 指針再次到達(dá),則鏈表中存在環(huán)。 為了表示給定鏈表中的環(huán),評測系統(tǒng)內(nèi)部使用整數(shù)…

給定一個鏈表的頭節(jié)點(diǎn) head ,返回鏈表開始入環(huán)的第一個節(jié)點(diǎn)。 如果鏈表無環(huán),則返回 null。

如果鏈表中有某個節(jié)點(diǎn),可以通過連續(xù)跟蹤 next 指針再次到達(dá),則鏈表中存在環(huán)。 為了表示給定鏈表中的環(huán),評測系統(tǒng)內(nèi)部使用整數(shù) pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。如果 pos-1,則在該鏈表中沒有環(huán)。注意:pos 不作為參數(shù)進(jìn)行傳遞,僅僅是為了標(biāo)識鏈表的實(shí)際情況。

不允許修改 鏈表。

示例 1:

輸入:head = [3,2,0,-4], pos = 1
輸出:返回索引為 1 的鏈表節(jié)點(diǎn)
解釋:鏈表中有一個環(huán),其尾部連接到第二個節(jié)點(diǎn)。

示例 2:

輸入:head = [1,2], pos = 0
輸出:返回索引為 0 的鏈表節(jié)點(diǎn)
解釋:鏈表中有一個環(huán),其尾部連接到第一個節(jié)點(diǎn)。

示例 3:

輸入:head = [1], pos = -1
輸出:返回 null
解釋:鏈表中沒有環(huán)。

這道題目,不僅考察對鏈表的操作,而且還需要一些數(shù)學(xué)運(yùn)算。

主要考察兩知識點(diǎn):

  • 判斷鏈表是否環(huán)

  • 如果有環(huán),如何找到這個環(huán)的入口

判斷鏈表是否有環(huán)

可以使用快慢指針法,分別定義 fast 和 slow 指針,從頭結(jié)點(diǎn)出發(fā),fast指針每次移動兩個節(jié)點(diǎn),slow指針每次移動一個節(jié)點(diǎn),如果 fast 和 slow指針在途中相遇 ,說明這個鏈表有環(huán)。

為什么fast 走兩個節(jié)點(diǎn),slow走一個節(jié)點(diǎn),有環(huán)的話,一定會在環(huán)內(nèi)相遇呢,而不是永遠(yuǎn)的錯開呢

首先第一點(diǎn):fast指針一定先進(jìn)入環(huán)中,如果fast指針和slow指針相遇的話,一定是在環(huán)中相遇,這是毋庸置疑的。

那么來看一下,為什么fast指針和slow指針一定會相遇呢?

可以畫一個環(huán),然后讓 fast指針在任意一個節(jié)點(diǎn)開始追趕slow指針。

會發(fā)現(xiàn)最終都是這種情況, 如下圖:

fast和slow各自再走一步, fast和slow就相遇了

這是因?yàn)閒ast是走兩步,slow是走一步,其實(shí)相對于slow來說,fast是一個節(jié)點(diǎn)一個節(jié)點(diǎn)的靠近slow的,所以fast一定可以和slow重合。

如果有環(huán),如何找到這個環(huán)的入口

此時已經(jīng)可以判斷鏈表是否有環(huán)了,那么接下來要找這個環(huán)的入口了。

假設(shè)從頭結(jié)點(diǎn)到環(huán)形入口節(jié)點(diǎn) 的節(jié)點(diǎn)數(shù)為x。 環(huán)形入口節(jié)點(diǎn)到 fast指針與slow指針相遇節(jié)點(diǎn) 節(jié)點(diǎn)數(shù)為y。 從相遇節(jié)點(diǎn) 再到環(huán)形入口節(jié)點(diǎn)節(jié)點(diǎn)數(shù)為 z。?

那么相遇時: slow指針走過的節(jié)點(diǎn)數(shù)為: x + y, fast指針走過的節(jié)點(diǎn)數(shù):x + y + n (y + z),n為fast指針在環(huán)內(nèi)走了n圈才遇到slow指針, (y+z)為 一圈內(nèi)節(jié)點(diǎn)的個數(shù)A。

因?yàn)閒ast指針是一步走兩個節(jié)點(diǎn),slow指針一步走一個節(jié)點(diǎn), 所以 fast指針走過的節(jié)點(diǎn)數(shù) = slow指針走過的節(jié)點(diǎn)數(shù) * 2:

(x + y) * 2 = x + y + n (y + z)

兩邊消掉一個(x+y): x + y = n (y + z)

因?yàn)橐噎h(huán)形的入口,那么要求的是x,因?yàn)閤表示 頭結(jié)點(diǎn)到 環(huán)形入口節(jié)點(diǎn)的的距離。

所以要求x ,將x單獨(dú)放在左面:x = n (y + z) - y ,

再從n(y+z)中提出一個 (y+z)來,整理公式之后為如下公式:x = (n - 1) (y + z) + z 注意這里n一定是大于等于1的,因?yàn)?fast指針至少要多走一圈才能相遇slow指針。

這個公式說明什么呢?

先拿n為1的情況來舉例,意味著fast指針在環(huán)形里轉(zhuǎn)了一圈之后,就遇到了 slow指針了。

當(dāng) n為1的時候,公式就化解為 x = z

這就意味著,從頭結(jié)點(diǎn)出發(fā)一個指針,從相遇節(jié)點(diǎn) 也出發(fā)一個指針,這兩個指針每次只走一個節(jié)點(diǎn), 那么當(dāng)這兩個指針相遇的時候就是 環(huán)形入口的節(jié)點(diǎn)

也就是在相遇節(jié)點(diǎn)處,定義一個指針index1,在頭結(jié)點(diǎn)處定一個指針index2。

讓index1和index2同時移動,每次移動一個節(jié)點(diǎn), 那么他們相遇的地方就是 環(huán)形入口的節(jié)點(diǎn)。

那么 n如果大于1是什么情況呢,就是fast指針在環(huán)形轉(zhuǎn)n圈之后才遇到 slow指針。

其實(shí)這種情況和n為1的時候 效果是一樣的,一樣可以通過這個方法找到 環(huán)形的入口節(jié)點(diǎn),只不過,index1 指針在環(huán)里 多轉(zhuǎn)了(n-1)圈,然后再遇到index2,相遇點(diǎn)依然是環(huán)形的入口節(jié)點(diǎn)。

解:

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public ListNode detectCycle(ListNode head) {ListNode slow = head;ListNode fast = head;while (fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;if (slow == fast) {// 有環(huán)ListNode index1 = fast;ListNode index2 = head;// 兩個指針,從頭結(jié)點(diǎn)和相遇結(jié)點(diǎn),各走一步,直到相遇,相遇點(diǎn)即為環(huán)入口while (index1 != index2) {index1 = index1.next;index2 = index2.next;}return index1;}}return null;}
}

http://www.risenshineclean.com/news/28434.html

相關(guān)文章:

  • 網(wǎng)站建站系統(tǒng)站長工具搜索
  • 網(wǎng)站服務(wù)公司特點(diǎn)上海疫情又要爆發(fā)了
  • 網(wǎng)站開發(fā)總監(jiān)自助建站
  • 如何做服裝微商城網(wǎng)站建設(shè)關(guān)鍵字廣告
  • WordPress電影公司網(wǎng)站主題大連網(wǎng)站建設(shè)費(fèi)用
  • 包頭市建設(shè)工程安全監(jiān)督站網(wǎng)站萬能搜索引擎入口
  • 東莞網(wǎng)站優(yōu)化微信公眾號運(yùn)營推廣方案
  • 滾屏網(wǎng)站模板網(wǎng)站生成器
  • 分類網(wǎng)站一天做幾條合適百度平臺客服電話
  • 50個辦廠好項(xiàng)目運(yùn)城seo
  • 網(wǎng)站正能量晚上免費(fèi)軟件愛站網(wǎng)為什么不能用了
  • 網(wǎng)站建設(shè)技術(shù)分為哪些方向電子商務(wù)營銷的概念
  • 哪個公司做網(wǎng)站最好深圳百度競價排名系統(tǒng)
  • 有服務(wù)器域名源碼怎么做網(wǎng)站平臺sem投放
  • 如何建立微網(wǎng)站詳細(xì)seo優(yōu)化操作
  • 網(wǎng)站怎么做讓PC和手機(jī)自動識別品牌策劃方案ppt
  • 撫寧區(qū)建設(shè)局網(wǎng)站5188關(guān)鍵詞平臺
  • 做網(wǎng)站常州網(wǎng)站建設(shè)網(wǎng)站定制
  • 哈爾濱建站在線咨詢做好網(wǎng)絡(luò)推廣
  • 大連網(wǎng)站建設(shè) 領(lǐng)超最好電商運(yùn)營公司排名
  • 基于web網(wǎng)上花店網(wǎng)站設(shè)計(jì)論文鄭州好的seo外包公司
  • 廣州網(wǎng)站建設(shè) 易點(diǎn)寧波seo關(guān)鍵詞優(yōu)化
  • 做網(wǎng)站百靈鳥網(wǎng)站建設(shè)產(chǎn)品介紹
  • 鄭州疫情最新數(shù)據(jù)消息界首網(wǎng)站優(yōu)化公司
  • 寶塔做的網(wǎng)站能不能訪問網(wǎng)址seo查詢
  • wordpress文章序號排列百度seo優(yōu)化策略
  • 唐山建設(shè)工程造價信息網(wǎng)站自己創(chuàng)建網(wǎng)站
  • 佛山網(wǎng)站建設(shè)的首選搜索引擎優(yōu)化方法總結(jié)
  • jquery做背景的網(wǎng)站賞析制作網(wǎng)頁鏈接
  • 做動物網(wǎng)站的原因是推廣什么軟件可以長期賺錢