快慢指標 求有序鍊錶的中位數

2021-09-23 20:39:45 字數 825 閱讀 1778

快慢指標的應用:

1. 快樂數 leetcode 202

2. 環形鍊錶  leetcode 141

3. 有序鍊錶的中位數(未找到原題,故自己編寫了測試用例↓)

4. 找出鍊錶倒數第k個節點 劍指offer

參考:【快慢指標方法:求乙個有序鍊錶的中位數】演算法實現&測試**:

public class test 

if(fast.next == null) //說明鍊錶有奇數個節點,此時slow正好是中位數

return slow.val * 1.0;

else //說明鍊錶有偶數個節點,此時(slow+slow.next)/2是中位數

return (slow.val + slow.next.val) / 2.0;

}//返回由乙個陣列生成的鍊錶的頭結點

private static listnode makelistbyarray(int array)

return dummyhead.next;

}//主函式

public static void main(string args) ;

listnode head = makelistbyarray(array);

double ans = sortedlistmedian(head);

system.out.println(ans);

}}// 鍊錶節點定義

class listnode

public listnode(int val)

}

鍊錶快慢指標

public listnode removenthfromend listnode head,int n 為了找到要刪除的節點的前乙個節點,所以此處讓fast.next null while fast.next null 此時head為倒數第n個節點的前乙個節點。slow.next slow.nex...

求兩有序陣列的中位數

給定兩個大小為 m 和 n 的正序 從小到大 陣列nums1和nums2 找出並返回這兩個正序陣列的中位數 時間複雜度o log m n 解法 二分法查詢 public class main int nums2 system.out.println mid solution.method nums1...

鍊錶與快慢指標

之前刷劍指offer遇到尋找鍊錶環的入口節點,需要使用到快慢指標,然後題一變,發現自己總是不能立馬聯想起來。總結一下快慢指標法在鍊錶中的一些常見的用處。leetcode 141 快指標每次走2步,慢指標每次走1步,如果鍊錶中有環,則兩個指標就會相遇。public boolean hascycle l...