資料結構之小演算法(快慢指標原理)

2021-08-30 13:24:09 字數 367 閱讀 4634

如何找到未知長度單鏈表的中間節點?

思路1:   遍歷單鏈表獲取長度n,n/2再遍歷得到中間節點,時間複雜度為o(n+n/2)=o(3/2n)

思路2:利用快慢指標原理,設定兩個指標*search,*mid,都指向單鏈表第乙個元素,假設單鏈表有頭結點,則為  search=mid=l->next,其中*search的移動速度是mid的2倍,當*search指向末尾節點的時候,mid正好在中間了,這也是標尺的思想,時間複雜度為o(n/2)

int getmidnode(lnode *c) 

else

} int e = mid->data;

return e;

}

資料結構之小演算法

1 給定乙個整數n,那麼n的階乘n!末尾有多少個0呢?例如 n 10,n!3 628 800,n!的末尾有兩個0。int zeronumber int num return ret int main return count 3 查詢乙個字串中第乙個只出現兩次的字元。比如 abcdefabcdefa...

C 複習之路 演算法與資料結構相關 8 快慢指標

思路 設定慢指標步長為1,快指標步長為2,同時出發,當快指標到尾部時,慢指標到了中部 需要注意鍊錶個數是奇數還是偶數 listnode searchmid listnode l1 if fast next nullptr return slow 節點總數為奇數 else return slow ne...

資料結構演算法 雙指標

演算法核心思想 雙指標多用於遍歷陣列,可以同時遍歷乙個陣列或分別遍歷不同的陣列。常見的設計思想如下 對於排序後的陣列,雙指標分別指向陣列的頭尾,遍歷方向相反,用於搜尋。雙指標指向兩個陣列,分別遍歷 快慢指標 滑動視窗 兩數之和 167.two sum ii input array is sorted...