日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

第K大元素解法:堆排序與快速選擇Java實現(xiàn)及復(fù)雜度詳解

第K大元素解法:堆排序與快速選擇Java實現(xiàn)及復(fù)雜度詳解 LeetCode 熱題100里有一道幾乎每個 Java 后端候選人都繞不開的題數(shù)組中的第K個最大元素。我第一次在面試現(xiàn)場被問到它時第一反應(yīng)是Arrays.sort之后取倒數(shù)第 k 個結(jié)果被面試官一連串“時間復(fù)雜度能優(yōu)化嗎數(shù)據(jù)流場景怎么辦”給問住了。后來我把這道題的兩個標準解法——堆排序和快速選擇——徹底吃透才發(fā)現(xiàn)它其實是一把打開 TopK 問題大門的鑰匙。這篇文章會把兩道解法的原理、Java 實現(xiàn)、復(fù)雜度推導(dǎo)以及我實際調(diào)試中踩過的坑完整拆開適合準備 LeetCode 刷題、Java 面試八股文以及想搞懂“第 K 大/小元素”這類題通用套路的讀者。1. 先把題目嚼碎這題到底在考什么1.1 題目要義與目標索引換算先看題目本身給定一個整數(shù)數(shù)組nums和一個整數(shù)k返回數(shù)組中第 k 個最大的元素。注意這里說的是“第 k 個最大的元素”不是“第 k 個不同的元素”。也就是說數(shù)組里有重復(fù)值時重復(fù)值也要參與排序計數(shù)。舉個例子nums [3,2,1,5,6,4], k 2排序后是[1,2,3,4,5,6]第 2 大元素是 5。如果數(shù)組里有重復(fù)值比如[2,2,3,1], k 2排序后是[1,2,2,3]第 2 大元素是 2而不是 3。這里新手最容易踩的第一個坑是“第 k 大”和“數(shù)組索引”之間的換算。數(shù)組升序排序后最小的元素在索引 0最大的元素在索引n-1。所以第 1 大對應(yīng)索引n-1第 2 大對應(yīng)索引n-2第 k 大就對應(yīng)索引n-k。換算成代碼就是int target nums.length - k;這個target代表“在升序排列中目標元素所在的索引位置”。后面快速選擇解法會頻繁用到它理解這個換算比背代碼重要得多。我見過不少人在面試時直接寫int target k那是在按第 k 小處理結(jié)果邊界全錯一調(diào)試就露餡。1.2 三條出路排序、堆、快速選擇圍繞這道題通常有三條技術(shù)路線方案時間復(fù)雜度空間復(fù)雜度特點全排序后取值O(n log n)O(1)最好寫但面試會被追問優(yōu)化大小為 k 的小頂堆O(n log k)O(k)適合海量數(shù)據(jù)流k 小時很香快速選擇算法平均 O(n)最壞 O(n2)迭代 O(1)平均最快是典型減治思想全排序的思路一句話就能說清Arrays.sort(nums)之后返回nums[n-k]。Java 的Arrays.sort對基本類型數(shù)組用的是 Dual-Pivot QuickSort對對象數(shù)組用的是 TimSort性能已經(jīng)很好了。但面試官出這道題從來不是想聽你調(diào)庫而是想看你能不能意識到“找第 k 大根本不需要把整個數(shù)組排好序”。這就是后面兩種解法的出發(fā)點。為什么標題鎖定堆排序和快速選擇因為這兩個方案分別代表了 TopK 問題里最典型的兩類解法一類是用堆維護“最大的 k 個數(shù)”適合流式數(shù)據(jù)和海量數(shù)據(jù)另一類是用 partition 分區(qū)思想做減治平均復(fù)雜度能壓到 O(n)。把這兩條路走通遇到前 K 個高頻元素、最接近原點的 K 個點、數(shù)據(jù)流中的第 K 大元素這類變體題都能直接套。1.3 另一條小眾路線計數(shù)排序/桶排序如果題目額外限制了數(shù)據(jù)范圍比如數(shù)組里所有元素都在[0, 10000]之間那還可以用計數(shù)排序或桶排序。計數(shù)排序的思路是開一個長度為maxValue - minValue 1的計數(shù)數(shù)組統(tǒng)計每個值出現(xiàn)次數(shù)然后從大到小累加計數(shù)累加到 k 時對應(yīng)元素就是答案。這種方案的時間復(fù)雜度是 O(n range)當 range 遠大于 n 時反而更慢。而且它要求數(shù)據(jù)必須是整數(shù)、范圍可枚舉。LeetCode 原題的數(shù)據(jù)范圍是-10^4 nums[i] 10^4其實用桶排序也能過但面試官通常希望你先掌握通用解法再提特殊解作為補充而不是上來就開桶。2. 小頂堆解法用堆維護“最大的k個數(shù)”2.1 為什么偏要用小頂堆而不是大頂堆這是這道題最經(jīng)典的一個概念陷阱。很多人一聽“找第 k 大”第一反應(yīng)是“那我要維護一個大頂堆每次把最大的彈出來”。方向反了。我們換個角度想維護一個大小為 k 的小頂堆堆里裝的是“當前已經(jīng)遍歷過的元素中最大的 k 個”。因為小頂堆的堆頂是堆里最小的元素所以這個堆頂天然就是“最大的 k 個元素里的最小值”也就是第 k 大的元素。每遍歷一個新元素時只需要和堆頂比較如果新元素比堆頂大說明它值得進入“前 k 大陣營”那就把堆頂彈出把它放進去如果新元素比堆頂小或相等說明它連當前第 k 大都擠不掉直接忽略。這里我給一個非常直觀的模擬。假設(shè)k 3數(shù)組依次是[5, 1, 9, 2, 8]遇到 5堆不滿直接放入堆為[5]遇到 1堆不滿直接放入堆為[1, 5]遇到 9堆不滿直接放入堆為[1, 5, 9]遇到 2堆已滿2 堆頂 1彈出 1放入 2堆為[2, 5, 9]遇到 8堆已滿8 堆頂 2彈出 2放入 8堆為[5, 8, 9]最后堆頂是 5也就是數(shù)組中最大的三個數(shù) 5、8、9 里最小的那個恰好是第 3 大元素。這個模擬跑完小頂堆的原因就一目了然了用一個能 O(1) 拿到最小值的結(jié)構(gòu)來維護候選集合誰最“菜”誰就先出局。2.2 Java 實現(xiàn)與逐行拆解Java 里實現(xiàn)堆最直接的方式是PriorityQueue默認是小頂堆。完整代碼如下public int findKthLargest(int[] nums, int k) { // 默認是小頂堆堆頂永遠是最小值 PriorityQueueInteger minHeap new PriorityQueue(k); for (int num : nums) { // 堆還沒滿直接塞進去 if (minHeap.size() k) { minHeap.offer(num); } else if (num minHeap.peek()) { // 當前元素比堆頂大說明它有資格進入前 k 大 minHeap.poll(); minHeap.offer(num); } // 如果 num 堆頂說明它不是前 k 大直接跳過 } // 堆頂就是最大的 k 個元素里最小的那個即第 k 大 return minHeap.peek(); }這里有幾個細節(jié)值得單獨拿出來說。第一new PriorityQueue(k)里的k只是初始容量不是“最大容量”。Java 的PriorityQueue不會因為你傳入k就自動只保留 k 個元素它會根據(jù)元素數(shù)量自動擴容。所以代碼里必須手動控制size這是新手常犯的錯我在面試時見過好幾個人在這里翻車。第二peek()和poll()的時間復(fù)雜度是 O(1)offer()的時間復(fù)雜度是 O(log k)。上面的寫法先判斷num minHeap.peek()再執(zhí)行poll()和offer()避免了無意義的堆操作。如果寫的是“先 offer 再判斷 size 是否超 k超了就 poll”雖然結(jié)果一樣但每次都會多做一次 O(log k) 的堆化數(shù)據(jù)量大了差距明顯。第三PriorityQueueInteger是對象類型對int[]數(shù)組需要逐個裝箱。Java 的自動裝箱會有一定開銷但在這道題的量級下完全不是問題。如果你追求極致性能可以自己用數(shù)組實現(xiàn)一個二叉堆把比較邏輯內(nèi)聯(lián)不過面試筆試里完全沒必要。2.3 堆解法的復(fù)雜度賬怎么算時間上每個元素最多經(jīng)歷一次offer()在堆滿后可能還會多一次poll()。PriorityQueue的插入和刪除都是 O(log k)n 個元素整體就是 O(n log k)。注意不是 O(n log n)因為我們始終把堆的規(guī)模限制在 k 以內(nèi)??臻g上堆里最多存 k 個元素所以是 O(k)。如果 k 很小比如 k 10堆的規(guī)模就很小內(nèi)存開銷非常低這正是堆解法在“海量數(shù)據(jù) TopK”場景下的核心優(yōu)勢你不需要把所有數(shù)據(jù)一次性加載到內(nèi)存只要維護一個容量為 k 的小頂堆就能在 O(n log k) 的時間里得到答案。數(shù)據(jù)流源源不斷來的時候堆解法也能在線處理新來一個元素就更新一次堆。反過來當 k 接近 n 時堆解法就沒什么優(yōu)勢了。比如 k n/2那堆的規(guī)模是 n/2復(fù)雜度退化到 O(n log n)和直接全排序差不多還多堆內(nèi)存開銷。這時候快速選擇或者全排序反而更合適。所以面試中如果被問到“k 很大時你怎么辦”不能只背一個堆解法。3. 快速選擇解法快排思想減一半工作量3.1 快速排序與快速選擇的血緣關(guān)系快速選擇的核心是分區(qū)partition而分區(qū)正是快速排序的靈魂。理解了這個關(guān)系就理解了為什么快速選擇平均能到 O(n)。快速排序每一輪會選一個 pivot把數(shù)組分成兩部分左邊都小于等于 pivot右邊都大于等于 pivot。關(guān)鍵事實是分區(qū)結(jié)束后pivot 已經(jīng)落在它最終的位置上也就是說它左邊的元素數(shù)量是固定的它在整個數(shù)組升序排列中的最終索引就是分區(qū)返回的下標??焖龠x擇利用了這一點我們不需要排序整個數(shù)組只需要找到目標索引target n - k。每次分區(qū)后拿返回的下標p跟target比較p targetpivot 就是這個位置直接返回nums[p]p target目標在右半?yún)^(qū)丟棄左半?yún)^(qū)繼續(xù)在右半?yún)^(qū)找p target目標在左半?yún)^(qū)丟棄右半?yún)^(qū)繼續(xù)在左半?yún)^(qū)找因為每輪只需要處理一側(cè)工作量從快速排序的“兩個子區(qū)間都處理”變成了“只處理一個子區(qū)間”這就是減治思想??焖倥判驈?fù)雜度是 O(n log n)快速選擇平均降到 O(n)本質(zhì)原因就在這里。換個更直白的說法快速排序像是一個老師要把全班 50 個人的成績都排好名次每個環(huán)節(jié)都要比較所有分區(qū)快速選擇只是想知道第 10 名是誰每次分區(qū)后只要盯著一半?yún)^(qū)域繼續(xù)找就行另一半直接扔掉。3.2 分區(qū)函數(shù)的三種寫法和取舍分區(qū)函數(shù)partition是快速選擇的基石寫不好整個算法就會出各種邊界問題。常見的寫法有三種Lomuto 分區(qū)、Hoare 分區(qū)、三數(shù)取中/隨機化增強。Lomuto 分區(qū)思路最簡單選最右邊的元素作為 pivot用一個i指針記錄“小于等于 pivot 的區(qū)域邊界”從左到右掃描遇到小于等于 pivot 的元素就把它換到i位置然后i。掃描結(jié)束后把 pivot 換到i位置返回i。它的交換次數(shù)比 Hoare 多但代碼不容易寫錯是面試首選。Hoare 分區(qū)是左右雙指針left從左往右找大于 pivot 的元素right從右往左找小于 pivot 的元素找到后交換。它平均交換次數(shù)少但循環(huán)條件和指針移動的細節(jié)很多稍不小心就會死循環(huán)或越界。比如兩個指針相遇時下標怎么處理、重復(fù)元素會不會導(dǎo)致無限交換這些問題在緊張狀態(tài)下很容易寫亂。三數(shù)取中和隨機化不是分區(qū)邏輯本身而是對“選哪個元素當 pivot”的改進。普通 Lomuto 固定選最右元素如果數(shù)組本身是近乎有序的分區(qū)會嚴重不平衡。三數(shù)取中是從left、mid、right三個位置取中間值當 pivot大概率能讓分區(qū)均勻一些隨機化則是隨機選一個下標當 pivot從概率上避免人為構(gòu)造的最壞輸入。兩者都只是調(diào)整 pivot 的選法不改變分區(qū)主體代碼。3.3 迭代實現(xiàn)第K大元素完整 Java 代碼先看完整實現(xiàn)我下面逐段解釋public int findKthLargest(int[] nums, int k) { int n nums.length; int target n - k; // 第 k 大元素在升序排列中的索引 int left 0; int right n - 1; while (true) { int p partition(nums, left, right); if (p target) { return nums[p]; } else if (p target) { left p 1; } else { right p - 1; } } } private int partition(int[] nums, int left, int right) { // 三數(shù)取中讓 nums[left] nums[mid] nums[right] int mid left (right - left) / 2; if (nums[left] nums[mid]) swap(nums, left, mid); if (nums[left] nums[right]) swap(nums, left, right); if (nums[mid] nums[right]) swap(nums, mid, right); // 把中位數(shù)換到最右端作為 pivot swap(nums, mid, right); int pivot nums[right]; // Lomuto 分區(qū) int i left; for (int j left; j right; j) { if (nums[j] pivot) { swap(nums, i, j); i; } } // 把 pivot 放回正確位置 swap(nums, i, right); return i; } private void swap(int[] nums, int i, int j) { int temp nums[i]; nums[i] nums[j]; nums[j] temp; }這里最需要注意的地方是while (true)循環(huán)。為什么用死循環(huán)而不是while (left right)因為每次分區(qū)后p一定落在[left, right]范圍內(nèi)并且只要p ! target我們就會縮小搜索區(qū)間區(qū)間長度嚴格遞減最終一定會出現(xiàn)p target。所以死循環(huán)是安全的不會無限循環(huán)。當然用while (left right)并在循環(huán)外返回nums[left]也可以但死循環(huán)配合立即返回更直觀。partition內(nèi)部的i是“小于等于 pivot 的區(qū)域邊界”初始是left。掃描時如果nums[j] pivot就把nums[j]換到i位置并讓i自增。掃描結(jié)束后[left, i-1]都是小于等于 pivot 的元素[i, right-1]都是大于 pivot 的元素最后把最右側(cè)的 pivot 換到i就完成了整個分區(qū)。這里nums[j] pivot用的是小于等于。如果改成嚴格小于會讓等于 pivot 的元素全部歸到右側(cè)在大量重復(fù)元素時可能導(dǎo)致分區(qū)不均衡。后面講三路分區(qū)時我會更詳細展開。3.4 期望復(fù)雜度推導(dǎo)為什么平均是 O(n)快速選擇平均 O(n) 的推導(dǎo)不復(fù)雜。假設(shè)每次分區(qū)都能把區(qū)間差不多分成兩半那么處理規(guī)模為 n 的問題時先做 O(n) 的分區(qū)然后只需要繼續(xù)處理規(guī)模大約為 n/2 的其中一個子區(qū)間于是T(n) T(n/2) O(n)展開是T(n) O(n) O(n/2) O(n/4) ... O(2n) O(n)等比級數(shù)求和的結(jié)果是 2n所以是線性復(fù)雜度。這里的關(guān)鍵是“每輪只處理一側(cè)”如果處理兩側(cè)那就是快速排序的 O(n log n) 了。最壞情況發(fā)生在每次分區(qū)都極度不平衡的時候。比如數(shù)組已經(jīng)升序排列pivot 又固定選最右側(cè)元素那每次分區(qū)后左邊區(qū)間有 n-1 個元素右邊為空目標每輪只減少一個元素。此時 T(n) T(n-1) O(n) O(n2)和冒泡排序一樣慢。所以工程實現(xiàn)里必須引入隨機化或三數(shù)取中。隨機化能保證在概率意義上很難碰到最壞輸入三數(shù)取中則讓“近乎有序”這類常見數(shù)據(jù)也不容易退化。兩者可以結(jié)合比如分區(qū)前先做三數(shù)取中再隨機挑一個。不過 LeetCode 場景下三數(shù)取中已經(jīng)足夠安全。4. 復(fù)雜度對照與面試選型指南4.1 五種方案的完整對照面試時經(jīng)常要求你說清楚每種方案的差異我用一張表整理方案時間復(fù)雜度空間復(fù)雜度適用場景關(guān)鍵優(yōu)缺點全排序O(n log n)O(1)數(shù)據(jù)量小或不追求最優(yōu)最穩(wěn)妥但面試會被追問小頂堆大小 kO(n log k)O(k)數(shù)據(jù)流、海量數(shù)據(jù)、k 較小內(nèi)存可控但 k 大時退化大頂堆全量O(n k log n)O(n)k 很小且數(shù)據(jù)能一次性裝入需要全量建堆內(nèi)存 O(n)快速選擇平均平均 O(n)最壞 O(n2)迭代 O(1)單次查詢、數(shù)組可改造平均最快最壞需隨機化防御計數(shù)/桶排序O(n range)O(range)整數(shù)且數(shù)據(jù)范圍有限范圍大時不適用我補充一個細節(jié)大頂堆全量方案是指先把所有元素放進一個大頂堆堆頂是最大值然后連續(xù)poll()k-1 次堆頂就是第 k 大。構(gòu)建大頂堆的時間是 O(n)poll 一次是 O(log n)整體 O(n k log n)。它能處理 k 特別小的情況但因為需要存下整個數(shù)組空間上并不占優(yōu)工程里很少有人用它替代“大小 k 的小頂堆”。4.2 什么數(shù)據(jù)會讓快速選擇翻車快速選擇最怕“刻意構(gòu)造的輸入”。經(jīng)典反例是數(shù)組幾乎有序pivot 固定取最右側(cè)元素每次分區(qū)后另一個子區(qū)間都接近空算法退化到 O(n2)。LeetCode 的測試數(shù)據(jù)一般不會故意惡心你但如果你用固定 pivot 的寫法去跑大數(shù)據(jù)量、幾乎有序的用例超時是有可能的。另一個容易翻車的情況是數(shù)組里全部是相同元素。Lomuto 分區(qū)如果寫成nums[j] pivot會把等于 pivot 的元素都放到右側(cè)分區(qū)后左邊為空右邊 n-1 個元素同樣退化。解決方法是把比較改成或者直接上三路分區(qū)。我在本地跑過[1,1,1,...,1]這種數(shù)據(jù)三路分區(qū)一次就能定位普通 Lomuto 分區(qū)用嚴格小于會退化得很明顯。還有個不太起眼但實際存在的問題遞歸深度。如果遞歸實現(xiàn)快速選擇每次只處理一側(cè)理論上遞歸深度可能達到 n極端數(shù)據(jù)下會棧溢出。LeetCode 的評測環(huán)境棧很深一般不會爆但如果是自己公司的算法面試現(xiàn)場手寫遞歸被問到“棧溢出怎么辦”就很尷尬。所以我的建議是直接寫迭代版本這是工程上更穩(wěn)妥的選擇。4.3 面試官追問時怎么答這題在面試里幾乎必然是連環(huán)追問的。我把我被問過的問題和合理答法整理了一下。問“時間復(fù)雜度是多少能不能證明”這是送分題答平均 O(n)展開等比級數(shù)求和然后主動補一句最壞 O(n2)再說我用了三數(shù)取中/隨機化來避免最壞情況。整套回答行云流水比只說“平均O(n)”好太多。問“這個算法能處理數(shù)據(jù)流嗎”不能??焖龠x擇必須拿到全量數(shù)組才能做分區(qū)數(shù)據(jù)流場景應(yīng)該用小頂堆堆里維護最大的 k 個新元素來了實時更新。這道題在“大數(shù)據(jù)面試題”里經(jīng)常和海量數(shù)據(jù)處理一起出現(xiàn)堆解法是那一類問題的標準答案。問“如果 k1 或 kn 呢”快速選擇只需要一次分區(qū)就能找到答案堆要遍歷完整個數(shù)組才能確定堆頂。單次查詢場景下快速選擇更優(yōu)。但如果是持續(xù)查詢比如“不斷有新元素進來隨時問當前第 k 大”那只能靠堆。問“內(nèi)存裝不下整個數(shù)組怎么辦”那就不能全排序也不能快速選擇只能分批處理維護一個大小為 k 的小頂堆從磁盤一部分一部分讀數(shù)據(jù)更新堆。這其實就是海量 TopK 的標準解法。5. 工程化細節(jié)把解法磨成生產(chǎn)級代碼5.1 隨機化 pivot一句話消滅最壞輸入三數(shù)取中能應(yīng)對“近似有序”的數(shù)據(jù)但嚴格來說它仍然是一種固定策略如果攻擊者知道你的取法還是可能構(gòu)造出壞數(shù)據(jù)。最穩(wěn)妥的做法是隨機化int randomIndex left ThreadLocalRandom.current().nextInt(right - left 1); swap(nums, randomIndex, right);ThreadLocalRandom是 Java 并發(fā)包里的工具在當前線程內(nèi)生成隨機數(shù)比new Random()的開銷更低。代碼放在partition的最前面選中隨機下標后把它和right位置的元素交換后續(xù)走 Lomuto 分區(qū)的邏輯完全不用改。隨機化解決的是“策略被預(yù)測”的問題。因為每次選 pivot 的位置是隨機的理論上任何輸入被分到極不平衡兩側(cè)的概率都極低最壞情況只能靠“運氣特別差”才會出現(xiàn)。在線判題環(huán)境里隨機化算法依然能保證正確性只是運行時間可能會有微小波動。我可以給出一個實測經(jīng)驗固定 pivot 的快速選擇在 LeetCode 的 215 題上跑大數(shù)據(jù)量時偶有超時風(fēng)險加上隨機化后基本都能穩(wěn)過。如果你的代碼在本地沒問題但提交超時優(yōu)先檢查 pivot 選法。5.2 重復(fù)元素與三路分區(qū)當數(shù)組里重復(fù)元素很多時普通 Lomuto 分區(qū)的問題在于等于 pivot 的元素會被隨機分配到左右兩側(cè)導(dǎo)致分區(qū)結(jié)果不穩(wěn)定。一種更強悍的做法是荷蘭國旗三路分區(qū)把數(shù)組一次性分成三段小于 pivot、等于 pivot、大于 pivot。這樣等于 pivot 的一整塊可以在一步內(nèi)確定位置不需要再參與后續(xù)遞歸。核心思路是用三個指針lt、i、gtprivate int[] partitionThreeWay(int[] nums, int left, int right, int pivot) { int lt left, i left, gt right; while (i gt) { if (nums[i] pivot) { swap(nums, lt, i); } else if (nums[i] pivot) { swap(nums, i, gt--); } else { i; } } // 返回等于 pivot 的區(qū)間 [lt, gt] return new int[]{lt, gt}; }如果目標索引target落在[lt, gt]區(qū)間內(nèi)直接返回pivot即可。如果target lt只需要處理左段如果target gt處理右段。對于全數(shù)組都是同一個值的極端情況三路分區(qū)一次就結(jié)束時間復(fù)雜度 O(n)。不過這道題用不用三路分區(qū)要看情況。LeetCode 的測試數(shù)據(jù)里重復(fù)元素比例不高普通 Lomuto 加三數(shù)取中完全夠用。但如果面試官特意問“數(shù)組里全是重復(fù)元素怎么辦”三路分區(qū)就是很漂亮的加分答法。我建議兩者都掌握寫代碼時優(yōu)先用三路分區(qū)思路邊界更不容易錯。5.3 邊界保護和健壯性細節(jié)有幾個實現(xiàn)細節(jié)看起來小實際出問題概率很高我單獨列出來。第一中間下標計算一定要寫成left (right - left) / 2不要寫成(left right) / 2。雖然這兩個表達式在大多數(shù)情況下結(jié)果一樣但當left right超過 int 最大值時會溢出結(jié)果變成負數(shù)導(dǎo)致數(shù)組越界。這道題 n 一般不大但養(yǎng)成這個習(xí)慣很重要。第二swap操作要讓兩個下標不相等時才執(zhí)行或者直接交換也無所謂。交換時如果i j純屬白做一次但對性能影響極小。真正需要注意的是 Lomuto 循環(huán)里swap(nums, i, j)的i和j可能相等如果你在swap里用了臨時變量這種自交換沒有任何問題。第三快速選擇是原地修改數(shù)組的。如果你不希望原數(shù)組被破壞需要先nums.clone()再操作。刷題時直接修改原數(shù)組沒問題但真實業(yè)務(wù)代碼里對外提供的 API 最好別改調(diào)用方的數(shù)組否則會有隱蔽的副作用。第四k的邊界。k 1時target n-1處理的始終是最大值k n時target 0處理的是最小值。這兩個邊界在快速選擇里都能自然收斂。堆解法在k 1時堆里始終只保留當前最大值邏輯也正確。6. 踩坑實錄與同類題擴展6.1 我實際踩過的幾個坑第一個坑把PriorityQueue當成“自動限制容量為 k”的容器。我第一次寫堆解法時天真地以為new PriorityQueue(k)會自動只保留 k 個元素結(jié)果堆里越長越大返回的堆頂根本不是第 k 大。后來意識到必須手動判斷 size這個錯誤才徹底改掉。第二個坑快速選擇的 target 換算寫反。我把“第 k 大”誤寫成“第 k 小”target k - 1然后用升序 partition 去找結(jié)果測試用例全錯。排查了很久才發(fā)現(xiàn)問題出在這一行。后來我每次寫這題第一行都先注釋// target n - k因為升序數(shù)組里第 k 大在索引 n-k。聽起來很傻但真的能救命。第三個坑Lomuto 分區(qū)寫成了嚴格小于。nums[j] pivot在大多數(shù)用例下也能跑對但遇到大量重復(fù)元素時退化成 O(n2)。有一次我拿著這段代碼去跑一個全為 1 的 10 萬長度數(shù)組跑了半天沒結(jié)束。改成之后瞬間出結(jié)果。這讓我養(yǎng)成了一個習(xí)慣每次寫完快速選擇本地先壓測三組數(shù)據(jù)隨機數(shù)組、近乎有序數(shù)組、全相同數(shù)組。第四個坑while (true)循環(huán)里返回點寫錯。我早期的代碼是在partition返回后直接return nums[p]但忘了判斷p是否等于target結(jié)果很多時候返回的只是一個隨機 pivot 值問題表現(xiàn)非常詭異。后來我強制自己在循環(huán)里只做兩件事比較p和target更新left/right其他一律不寫邏輯就清晰了。6.2 從這題延伸出去的一串 LeetCode 熱題這道題最厲害的地方是它連通了一大片 TopK 類問題屬于熱題100里的“樞紐題”。我建議刷完它之后馬上做下面這幾道能明顯感覺到套路復(fù)用數(shù)據(jù)流中的第 K 大元素小頂堆解法的直接應(yīng)用維護大小為 k 的堆每個新元素進來都更新堆返回堆頂。這題和 215 幾乎一個模子。前 K 個高頻元素先用哈希表統(tǒng)計頻率再用大小為 k 的小頂堆按頻率排序。核心還是“維護一個容量為 k 的候選集合”。最接近原點的 K 個點把距離算出來放進堆里堆大小 k按距離比較。本質(zhì)依然是 TopK。根據(jù)字符出現(xiàn)頻率排序哈希統(tǒng)計加桶排序或堆排序重點練“統(tǒng)計排序”組合。另外熱題100里的 994 腐爛的橘子、073 愛吃香蕉的狒狒、224 基本計算器這些題雖然解法不同但它們在“細節(jié)邊界多”這一點上和 215 很像。刷 215 時你會養(yǎng)成一個習(xí)慣反復(fù)驗證索引邊界、處理重復(fù)值、考慮最壞數(shù)據(jù)這個習(xí)慣遷移到 BFS 和棧模擬的題目里同樣有用。我個人在實際刷題和面試復(fù)盤中的體會是TopK 題先問自己三個問題——k 有多大數(shù)據(jù)能一次性放內(nèi)存嗎數(shù)據(jù)有沒有大量重復(fù)把這三個問題想清楚用堆還是用快速選擇其實馬上就能判斷。還有一點不要只背代碼要在本地把數(shù)組改成幾乎有序、全相同、含負數(shù)等邊界情況分別跑一遍很多隱藏問題只有在這種壓測下才會暴露。這道題刷透之后你會發(fā)現(xiàn)自己在處理“海量數(shù)據(jù)第 K 大”類問題時思路會清晰很多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91撸色网 玖玖网 欧美| 在线看免费无码AV天堂的| 亚洲熟伦熟妇AV无码春色| 欧美激情综合| 国产精品熟女九色九色蜜臀| 超碰人人干| 女人妻一区| 91人人爽人人爽| 欧美日韩婷婷中文| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 日韩在线76| 亚州春色| 久夜视频| 99久久婷婷国产综合精品草原| 久操黄色视频| 黑人性欧美| 亚欧韩av| 欧美激情在线观看视频| 插欧洲美女欧美精品| 亚洲s色图| 欧美日韩在线视频网站| 一区二区日韩欧美久久| 漂亮人妻被强中文字幕hd| AV污污污污| 中日无幕一二三四区| 日本色日夜干| 成 人 影视 一区 二区 三区 四区| 老熟妇一区二区三区啪啪| 欧美一二三级精品在线| 在线观看视频91| 精品国产一区探花在线观看| 蜜伊人色综合97| 人妻色偷色噜| 午夜天堂精品久久| 免费中文在线| 日产操逼| 日韩特一级久久| av一区二区三区 中文| 亚洲性综合11| 精品免费一区二区三区在线亚洲人成| 成人性爱av| 精品视频久久区| 韩国黄色片精品久久久| 亚洲一区二区在线观看91| 东京日日夜夜| 麻豆国产视频精品观看| 男人综合网| 精品一区96| 日韩国产在线观看av| 色香伊人| 青青草吊丝| 中文字幕精品一区二区精| 日韩BBN| 理论久久婷婷网 8| 亚洲成?V人片在线观看福利| 91欧洲国产成人久久精品网站| 日韩78m视频| 亚洲AV无码久久久国产精品| 国产AV色黄看到爽| 2024黄色视频| 丁香九月婷婷| 密臀视频一区二区三区| 岛国大片在线观看网站入口| 丁香九月 婷婷| 欧美不卡在线一区二区| 黄色电影在线播放综合网站| 日韩性爱视频免费在线| 日韩人妻精品久久久久| 久久a久久| 97舔舔| 亚洲一区深夜| 欧美天天综合站| 亚洲诱惑天堂 | 色噜噜综合在线| 2001天天操| 日本99一区二区| 东京热99999| 欧美精品黑人猛交高潮| 久久男人精品| 啊啊啊用力在线观看| 婷婷激情一区二区三区俺也去| 日本不卡三级网在线播放| 日韩美一区| 亚洲Av噜噜一区二区三区妖精| 亚洲青青草| 亚洲男人天堂手机版| 欧美色图色综合| 秋霞一级鲁丝片A片| 亚洲乱色熟女一区| 色视频蜜乳| 日韩精品中文字幕二区| 97综合在线观看| 久久同城AV| 99久久99九九99九九九| 最近2018中文字幕在线高清第一页| 精品国产丝袜一区二区三区乱码| 狂操嫩妻视频一区二区三区| 亚av顶级裸体一区二区三区四区五区 | 五月大香蕉| 国产小视频91| 岛国不卡超碰护士AV在线播放| 四虎精品永久在线观看| 亚洲日韩美国人妻| 国产不卡中文字幕免费avi| 亚洲色图国产另类| 天天射天天操天天干天天吃2018 | 欧美少妇一区二区三区| 免费试看60秒| 操操碰| 国产极品久久久| 91丝袜在线播放| 色情乱伦AV| 欧美日韩人人精品| www国产无码| 极品美女福利在线观看| 欧美极品色| 久久东京伊人一本到鬼色| 7月婷婷综合| 清纯唯美激情| 丁香五月婷婷色| 天天操天天7| 日韩强奸av| 日韩午夜精品一区二区三区电影| 精品.99999| 一区二区无码视频| 大香蕉www.超碰| 欧美制服另类丝袜| 91天天看| 97香蕉人人乳| 午夜福利一区二区影院| 人妻天天爽夜夜爽精品2| 大逼色网站| 婷婷AV一区二区三区| 91精品国久久久久久无码| 国产美女口爆吞精视频| 一牛影视久久久一区二区三区| 亚洲欧美97| 五月综合久久| 小说区 图片区色 综合区| 黄色污污污污污污网站| 中国农村熟妇毛片视频| 亚洲色图欧美色图制服丝袜 | 久久水蜜臀亚洲AV无码精品| 欧美偷拍区| 97香蕉人人乳| 成人日韩3| 久久熟妇五十路一区| 日本性爱视频一级| 亚洲国产亚洲天堂| 欧美一级色| 一中国女人毛片水真多| 嫩草伊人久久精品| 日本一区二区成人在线| 欧美综合综合| 十八禁视频网站| 欧美在线电影| 殴美日韩m| 日韩 欧美 视频 在线 一区| 在线 欧美 亚洲| 青青草日韩无码| 99精品无码| 麻豆 美女 丝袜 人妻 中文| 吉田爱美AV在线| 成全在线观看免费观看| 青青草这里只有精品| 久久精品国产精品亚洲艾通辽熟妇 | 91亚洲综合| 97综合国产精品高潮久久| 久久国产热视频97电影| 亚洲 欧美 第一页| 亚洲中文电影| 青草视频在线看看看看看看看看看| 欧美激情专区| 成熟熟女国产精品一区二区| 操狠狠| 黄色一区二区秘书性感| 中文字幕一区二区无码成人 | 漂亮人妻被强中文字幕hd| 亚洲色堂免费视频| 每日更新AV| 男人的天堂 在线一区| 色偷偷色偷偷欧美日韩| 欧美躁死她一区二区| 人人干人人操人人爱| 色噜噜狠狠色综无码久久| 992这里有精品| 亚洲图片色图欧美另类| 亚洲在饯| 亚洲乱熟女一区二区| 91大神电影天堂| 久久99午夜精品一区人妻| 九色黄站| 揉揉揉夜夜| 成人熟女区| 色噜噜狠狠色综无码久久合欧美| 亚洲电影中字一区二区| 欧美日韩在线小说 | 啪啪免费| 国产精品视频自拍在线| 日本黄色精品专区网站| 久久国产精品m码| 后入式福利| 色综合20p| 国产成人亚洲精品自产在线 | 久久99久久99精品天美传媒棢·纸:. | 深夜福利黄片| 青青青在线高清视频在线一二三四区 | 色婷婷成人| 美女写真| 隔壁邻居波多野结衣中文字幕 | 久久亚洲AV无码专区国产精品| 亚州综合| 天美传媒精品一区二区| 操人妻视频| 久久久久久久9999| 久久九色| 成人性爱AV在线免费观看| 亚洲国产丝袜熟女av| 久夜视频| 亚洲欧洲成人在线电影| 人人干黄色| 激情抓乳插进去啪啪啪日韩| 一区二区三区免费岛国片| 欧美性爱www免费版| 欧美精品一区二区少妇免费A片| 精品国产一区探花在线观看| 91精品女厕偷拍视频| 国产91会所女技师在线观看| 性饥渴少妇av无码毛片| 国产性爱在线视频一区二区| 欧美日日操| 操逼片国产| 狠狠色噜噜狠狠狠狠狠色综合久久 | 亚洲国产成人精品无码专区| 国产探花精品在线| 亚洲一本大道中文字幕无码在线| 国产超碰| 97视频观看| 69精品人人人人| 9/A片| 亚洲免费精品一区| 东北老女人的激情视频| 97er欧美性| 天天搞欧美| 不卡二三区人妻少妇| 男人天堂东京热| 国产精品内射婷婷一级二| 亚洲熟女av中文字幕| 欧美日本成人一区二区| 岛国片国产成人亚洲播放| 精品国产精品一区二区| 色天使大香蕉| 91精品国| 亚洲第一页第二页激情| 中文字幕精品一区二区精| 天天看,天天做| 国产高清午夜成人在线观看| 国产精品无码AV网站| 福利在线观看一区二区| 色狠人在线99| 国产精品69久久久久孕妇欧美 | 亚洲 日本 一 二 三| 亚洲男人天堂2012| 蜜桃臀av一区二区| 日熟女| 99久久久久| 欧美黄色图片| 天天亚洲| 天天精品| 久久久久久久久久久久久久久乱码| 在线观看 99热| 老熟女网站| 在线中文字幕极品av| 五月丁香综合啪啪| 国产熟妇一区二区| 家庭乱伦国产精品| 久久人妻视频网| 97视频900| 熟妇色99| 啪啪啪综合网| 亚洲自拍欧美色综合| 一区二区高清视频| 人妻熟女av国产网站| 九九九九日本| 第四色奇米影视777| 日本日逼视频网| 乱久久久| 亚洲91在线播放影院| 蜜桃视频精品一区二区| 色色97爱| 五月天婷婷成人网| 啊啊啊慢点| 日韩探花精品在线视频| 四虎884a| 黄人人操人人操| 九九热九九热| 欧美亚洲中文| 中文字幕丝袜人妻| 日本孕妇一区二区视频操逼免费看| 国产精品久久久久综合| 麻豆色约约| 精品人妻1区| 日韩一999精品| 夜夜爽夜夜高潮夜夜爽| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 欧美国产日韩高清在线| 啊啊啊啊啊在线视频| 成 人 A V免费视频在线观看| 综合欧美亚洲| 日韩人妻操B| 啊啊啊啊啊啊在线观看| 少妇诱惑视频| 精品人妻一区二区三区日产乱码| 九九无码久久精品视频| 草草电影院| 欧美综合色站| 亚洲精品一区二区精品| 女人的天堂大香蕉网| 欧美性生活免费网| 青草影院内射高潮| www色色com| 五月情色天| 日韩偷拍色图| 亚洲精品一二牛牛| 人人爽人人精品乱人伦AV| 这里只有精品视频在线观看麻豆| 在线小视频| 中国探花熟女| www国产精品| 91狠| 日韩久久.一级黄色片| 天天操人人操骚逼网站| 国产精品熟女丝袜一区二区| 91 丝袜在线播放| 欧美日韩婷婷中文| 欧美亚洲日本激情在线| 婷婷色综合欧美日韩| 国产有码一区| 久久xx| 欧美激情1区| 67914在线精品观看| 色在线亚洲视频www| 欧美日韩中国x| 亚洲日韩精品在线播放| 大屁股人妻女教师撅着屁股| 久久成人午夜狠狠| 91大胆欧美| 91亚洲色人| 亚洲午夜蜜臀| 精品久久久中文字幕不| 国产操伦| 综合网91| 精品国产a∨一区天美传媒| 亚洲激情久久| 久操网视频| 97综合国产| 是还免费视频1727我| 99热久| 999亚洲国产视频| 亚洲天堂另类| 风骚少妇视频中文字幕| oumeisetu综合| aaaa黄片| 精品人妻av在线播放| 情色五月天就去干| 精国久久一区二区三区98| 五月天偷拍| 亚洲码专区| 免费的黄片有限公司| 高精欧美色| 91国产在线精品| 国产夫妻一区二区| 巨爆乳肉感一区二区三区竹菊影视 | 99久久精品无码一区二区毛片免费| 色香综合天天影视综合| 天堂射| 污到发麻的视频 国产| 亚欧性爱无码| 精品国产三级av韩国在线| 久久日韩肥臀| 日本天堂在线播放| 校园春色中文字幕AV| 人人手机欧洲亚洲国产人妻| 99re9在线| 婷婷五月天激情小说| 网页导航五月天免费一二三区 | 九九伊人网| 日本精品一区二区中文字幕| 成人aⅴ一区二区三区| 国产成人在线观看网址| 91综合网站| 大香蕉日韩| 日韩97超碰| 大逼色网站| 欧美综合色图网| 熟女久久久| 99这里都是精品| 伊人 俄罗斯 a v| 高潮综合网| 久久爱超碰网| 久操视频免费观看| 久久禁| 欧美色交| A 天堂| 精品无码欧美三级| 一级毛片久久久久久久女人18| 国产精品人妻无码久久久老鸭窝| 欧美十八禁视频| 日韩在线一区高清在线| 日韩人妻 中文字幕| 大色综合网| 在线观看中文av字幕| 综合操逼| 丁香啪啪| 91国产美女丝袜足交精品视频| 久久久久ab| 97在线日韩中文字幕| 少妇熟女视频一二三区| 天欧美在线| 中文字幕一区二区无码成人| 人人操人人93| 大香蕉伊人网| 一区| 免费操逼91| 自拍偷拍 日韩无码| 精品久久九| 激情小说亚洲| 嗯嗯啊啊操死我| 97亚洲在线| 久久丁香| 亚洲天天做日日做天天谢日日| 五月激情天| 东京热伊久| 97天天操天天干| 怡春院久久| 丰满人妻一区二区三区大胸懂色| 日韩人妻精品中文字幕| 老熟妇一区二区三区…| 美女黑人91神马| 伊人一区二区在线播放| 欧美白嫩女HD| 五月天我淫我色av| 亚州 综合 色图| 强奸乱伦Av网| 欧美精品一二三| 亚洲人在线成线成人| 97亚洲自在精品在线观看| 丁香色婷婷| 蜜桃臀一区二区aV | 青青青国产| 日韩啪啪视频| 国产久久久久影院老熟女| 人人妻人人狠人人| 精品毛片av一区二区| 大香蕉啪啪啪啪在线| 91久久18禁| 人人操人人插人www| 欧美色图99| 欧美欲色| 人妻丝袜美腿中文字幕| 久久久久久波多野吉衣高潮| 色人久久| 色五月首页| 国产精品午夜福利亚洲综合网| 欧美线天码中字| 欧美亚洲AN| 色综合久| 天天干夜夜一操| 亚洲国产一级黄色视频| 91美女小视频| 超碰九7| 国产精品乱码久久久久久久| 国产精品视频| 中文字幕视频2区| 日韩欧美视频青青| 一区二区激情国产熟女 | 欧美影院一区二区三区| 人人看黄色视频| 欧美高清无码免费视频高清版| 男人天堂东京热| 欧美翘臀视频网站一区二区三区| 国产97在线视频| 色欲Av人妻精品一区二| 亚洲欧洲综合成人av一区| 日韩免费av片高清无码| 国产av波波国产精品| 色综合天天| 8050无码八戒| 国产视频三区四区| 极品内射| 久久久青青草| 在线午夜成人无码视频| 强奸乱伦中文字幕AV| 91oumei| 白丝少妇一区二区| 青青草华人在线欧美在线| 国产精品电| 久久超碰网| 超97在线精品视频| 国产日本熟女顶级一区二区三区视频 | 久九干| 五月天丁香| 日本蜜桃| 日韩青久久| 国产成人久久精品蜜臀| 综合欧美日韩在线观看| 男人的天堂色偷偷青青草视频婷婷网| 韩国毛片一区二区三区| 国产精品点击进入在线影院高清 | 国产白丝网站| 91人妻精华帖| 91中文精品日韩欧美在线| 蜜臀99久久精品久久久久久| 尹人免费观看视频在线| 中文字幕精品丝袜| 欧美高清第一页| 亚洲熟女中文字幕在线| 色娱乐色呦呦夜夜夜夜av| 中文一区二区三区影院| 欧美一区91大爱| 97超级久久| 九九无码视频| 亚洲国产天堂| 久久国色天香香蕉| 色逼综合| 少妇99成人麻豆| 91啪啪| 色性欧美| 日本操逼aaaaa| 欧美综合色站| 午夜福利在线合集| 一区中文字幕二区日韩| 岛国大片国产| 国产人伦精品一区二区三区| 欧美色狠| 亚洲成人黄色在线观看| 九九热免费在线国产视频伊人五月| 天堂亚洲欧美| 欧美色偷拍| 日日操免费视频| 熟妇人妻一区二区三在线| 天天看,天天做| 亚洲图片 欧美电影| 亚洲少妇色| a级免费在线观看| 色优久久| 草草电影院| 九九九999久久久网站| 六月婷婷综合| 久久激情亚洲精品无码?V| 超碰视97中文| 欧美中字二区| 中文字幕在线观看二区三区| 91中出| 屁股久久久久久久久| 精品国产乱码久久久久久久久1 | 91 亚欧| 大香蕉综合久久| 国产精品爽爽v| 日韩99999| 久久久久久99999国产精品| 男人的天堂啪啪| 91人妻素女| AV网站高清无码在线观看| 97超碰欧美手机| 2020天天色综合| 色天堂在线观看| 色香阁在线| 免费人成在线观看网站品爱网| 亚洲天堂2020| 蜜臀AV午夜精品久| 性色亚洲| 亚洲无码超碰免费| 97免费视频在线观看| 九九九国产| 天天干人人看综合| 强奸乱伦AV网站| 香蕉久久AⅤ...| 亚洲码在线中文在线观看| 国产乱伦视频污| 日本色色视频网站| 中文字幕一区二区日韩网| 国产亚洲深夜激情| 99re6在线视频播放免费精品| 欧美成人精品一区二区男人蜜臀 | 超碰碰激情97+久| 中出91| 天堂麻豆天美| 毛片麻豆91糖心精品毛情片| 91综合天天看| 麻豆成人影音在线| 人妻系列无码专区中文有码| 国产欧美日韩女同性恋ww喷水精品 | 色婷视频| 天堂精品| 欧美大香蕉同搞| 国产精品一区人妻精品阁在线| 综合久欧洲| 人妻精品一区二区三区| 秋霞无码av鲁丝片一区| 激情文学 国产一二三aV| 国产三级中文字幕粉嫩| 333kkkk·亚洲com久久| 中文字幕一二三区| 日韩无码一级黄色av片| 激情六月天| 色网亚洲人| 国产久久av| 乱码熟妇人妻久久久| 欧美色女人| 97干日韩| av爱爱爱| 国产午夜视频| 亚洲精品性爱片| 亚洲五区熟女| 日韩亚洲中文有码视频| 区二区亚洲婷| 亚洲av淫乱| 97欧美日韩精品| 男人天堂最新手机版在线青青草| 婷婷午夜成人色中色| 欧美日韩国产电影| 香蕉久久AⅤ...| 欧美精品 - 91爱爱| 天天懆天天日| 97超碰色中文字幕| A久久| 99热这里只有精品1| 91久久久久免| 精品成人亚洲午夜电影| 国产后入式在线观看| 操一区| 国产美女高潮| 999熟女精品| 色五月婷婷网| 亚洲 综合 第一页| 亚洲日韩东京热一区| 好湿好紧视频| 日韩激情毛片一级久久久| 午夜福利视频在线一区| 91丨九色丨国产打屁股| 97国产人人| 加勒比AV网| 99热官网| 欧美日本一区二区a人| 人妻丝袜二区| 天天综合网合集91| 密臀在线免费观看| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 欧美日韩精品国产91| 婷婷激情综合网| 五十路六十路七十路熟婆| 嗯嗯啊啊啊好爽| 天美传媒AV国产在线| 精品国产72| 二色av| 精品人妻免费观看| 色爱综合网| 乱伦图av| 国产91av在线播放| 日本淫乱女一区二区三区视频| 五月天伊人网| 51国产午夜精品视频| 好属操| 中文字幕伊人| 日本一久是| 人妻人妻天天碰| 久久精品中文| 中国的操老妇女| 色欲蜜臀AV| 狠狠色噜噜狠狠狠狠狠色综合久久| 大香蕉2017| 91美| 高清国产性猛交xxxx乱大交| 在线无码操| 欧美人妻精品| 精品国产乱码久久久久久日本公司| 超碰4A| 在线色导航| 色综合五月天| 久湿久久| 成人性爱av| 亚洲国产欧美日韩人妻日中文| 丰满精品人妻少妇久久字幕| 欧美图片校园春色| av无线看| 蜜臀AV一区二区三区激情综合| 99久久9| 亚洲久久天堂| 少妇高潮喷水无套久久久久久| 91麻豆天美国产欧美高潮| 一区二区三区国产在线播放 | 婷婷色香| 国产一区二区三区高清视频| 精品国产肉丝袜在线拍国语| 有码色中文字幕在线观看| 不卡在线观看视频| 99这里都是精品| 91精品国产日韩欧美综合| 无码一区二区三区四区五区六区七区八区九区十区视频 | 超碰亚洲97| 99操逼| 久久婷婷伊人| 亚洲欧美色图片| 精品久久視頻在线| 九九亚洲| 日韩紧密久久| 性爱乱伦视频免费| 久久综合久色欧美综合狠狠| 国产操逼逼网| 欧美色图20P| 天美国产三级传媒| 国产一进一出视频网站| 男人的天堂在线| av一区二区三区 中文| 亚洲毛片久久| 婷婷爽人人婷婷爽视频| 亚洲日韩AV视色| 欧美色图私拍91| 婷婷探花久久精品一区| 亚洲欧洲综合视频在线| AV色五月天| 久久久久国产一区二| 91在线国产后入风骚翘臀美女素人| 日本精品不卡一二三区| 久草老司机| 久久五月丁香| 日韩大香蕉| 曰韩中文人妻视频| 国模限制级电影| 乱伦一区二区三区‘| 日韩色女精品| 激情五月婷婷| 亚洲欧美日韩免费观看| 青青草亚洲一区| 狠狠中文字幕| 亚洲中文字幕一区二区| 人妻精品4K4K4K4K4| 伊人黄色片| 大香蕉2017| 天天综合色电影| 欧美日日操| 桑老女人九区| 亚洲中文字幕日产无码久久| 最新国产精品久久精品| 九九九久久久| 天天在线91| 一区 欧美 日韩 麻豆| 五月婷色| 草草网站影院白丝内射| 一个色导综合| 啊啊啊啊啊好多水| 91热色| 色网在线| 日本999精品| 大香蕉综合| 东京太热久久久| 久99热| 国产热av| 日韩美女久久一区二区三区| 久久e6只有精品| 欧美网站免费| 久久久久久久九九九九九九| 亚洲麻豆av一区二区| 欧美综合色图片| 九久久九九久视频| 97视频免费在线| av72网| 婷婷五月天久久久| 亚欧高清在线| 人人扣人人操| 裸体美女免费看网站青草| 亚洲精品第一| 国产情侣自拍在线播放| 五月婷婷丁香中文字幕| 韩国一级婬片A片AAAAA| 大香蕉免费中文| 清柠毛片| 欧色性第一页| 日日骚一区二区三区| 精品在线蜜臀| 欧美 精品国产制服第一页| 99精品视频在线观看免费| 亚洲欧洲网站免费观看| 中文伊人大香蕉视频| 天天看特黄的免费网站| 一本色道久久综合精品婷婷| 综合网欧美在线| 91在线欧色| 嫩草影院永久在线制服丝袜| 欧美的精品的视频| 久久草草亚洲蜜桃臀| 欧美顶级黄片AAAAA在线免费看| 伊人影院综合是一个与深夜成人在线| 日韩欧美一级特黄大片| 在线99热| 日韩噜噜69| 天天日熟妇| 欧美第一页| 亚洲激情AV| 91青青在线视频| 黑人白女精品一区| 偷拍自拍在线视频观看| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 久久精品国产亚洲AV片多多| 荡小穴在线观看| 乱久久久| 欧美懂色综合网| 国产成人精品日本亚洲语言| 欧美日韩人人早| 亲子敌伦对白在线播放| 五月天激情小说| 亚洲天堂少妇| 亚洲激情综合| 9久久久久| 天天射网| 国产精品久久久吖| 久久超碰、| 精品人人插人人操| 久久同城AV| 男人高清无码一区二区| 欧美熟妇亚洲版| 亚一综合久久久久久久久久| 欧美天天谢综合网| 伊人久久综合精品欧美| 极品AV网站在线观看| 国产人妻天天干精品| 精品无码一区二区人妻久久蜜桃| 国产一区二区欧美日本| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 丁香五月大香蕉| 久久中出| www.男人天堂| 九九黄色视频在线观看| 欧美激情高清性猛交| 天天看天天综合成人网| 亚洲一区日韩精品中文字幕| 日韩精品99久久久久久中文字幕| 久久毛卡| 天堂69亚洲精品中文字| 人妻天天爽夜夜爽2| 殴美牲| 自怕偷自怕亚洲精品| 天堂亚洲精品| 久久伊人网视频一区二区三区| 级品肉射| 97超碰碰碰| 91av一区二区在线观看| 亚洲系列欧美| 日本一区二区三区欧美日韩中文字幕| 日韩国产不卡在线视频| 国产高清午夜成人在线观看| 日韩天天综合| 久草毛片| 日韩无码AB| 亚洲国产综合久久天堂| 久久综合婷婷| 色婷婷视频| 久热九九| 男人的天堂啪啪| 色99在线| 亚洲精品99| 日本三级久| 欧美专区第一页| 中文字幕黑人大片| 婷婷四五区| 北京专精特新企业招聘信息| 99丝袜福利在线播放| 水野优香在线观看| 久久麻豆一区二区| 五月综合色| av中文字幕在线熟女| 国产亚洲一黄| 久久一区,青青青青草视频在线播放| 99热18| 精品久久青青草| 日欧美色| 国精综合一二三区影视| 四虎影视永久在线观看精品免费网站| nuu12国产麻豆精品| 亚洲一区二区麻豆影院| 精品夜夜澡人妻无码| 96AV精品| 欧洲精品欧洲精品| 亚洲人妻爽爽爽| 日韩欧洲操屄视频| 国产久久久久久久久一区二区| 91在线无码精品秘 软件| 亚洲最大成人a毛毛片| 日韩中文字幕二区| 99色| 中国熟女网站| 91女色| 国产一区二区三区视频在线看| 免费综合亚洲中文| 性色avv| 黄色免费网| 久久婷婷亚洲| 老司机免费视频在线91| 97这里只有精品| 91精品国产高清久久久久久,亚洲成人| 蜜臀在线免费观看在线免费观看| AV99热18这里只有精品| 天天噜| 红杏大香蕉| 亚洲高清色综合| 美女黄频a美女大全免费皮| 91欧美高清| 偷拍导航视频网站| 亚洲性爱无码乱伦av| 91丝袜熟女| 九九九久久久久| 中文字幕第2页| 色性综合| 蜜臀99久久精品久久久久| 亚洲色五月| 激情五月综合网| 亚洲久9| 亚洲天堂另类美腿| 九九综合九九综合| 5252色欧美在线| 综合久久久久久久综合网| 啊啊啊啊啊在线视频| 激情抓乳插进去啪啪啪日韩| 精品97久久综合| 亚洲无吗在线视频| 成人性交免费视频| 中文字幕艹艹| 成人激情无码在线视频| 欧美Aⅴ| 天天色怡春院| 五月婷婷色| av毛片aaaaa免费看| 99色日| 色嗨嗨在线| 婷婷爽人人婷婷爽视频| 黑丝日韩av丝袜av| 黄片在线免费在线观看| 日韩精品字幕| 久久精品无码熟妇一区二区三区视频导航| 成人av免费观看| 欧美色www亚洲国产阿娇要播| 搡老女人911熟妇老熟女| 免费草草草草草视频| 婷婷五月天综合网| 国产极品精品美女视频| 99久久99九九99九九九| 欧美三级一级| 亚洲91极品| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 成人性爱免费播放| 天美麻豆一区二区三区| 久草草一二三四区久久| 91狠狠综合久久| 在线综合色| 亚洲九月丁香| 欧美精品一区二区少妇免费A片| 久久久少妇| 91老司机精品| 大逼色网站| 久久久久女教师免费一区| 久久天堂网| 亚洲日韩狠狠撸视频| 日韩欧美三级| 亚州欧美在线| 91春色| 葡萄牙性视频一二区| 欧美亚洲中文字幕| 91肉丝| 国产后入式在线观看| 欧美综合色| 国产综合久久久麻桃个| 熟女熟妇伦久久影院毛片一区二区| 内射黑丝袜| 日日摸日日碰夜夜爽视频| 日逼97| 欧美十八禁视频| 中文字幕AV乱伦| 欧美成人黄网色网站| 六月丁香五月婷婷| 亚洲有码 视频一区| a片自拍直播视频| 91被操| 无码精品一区二区三区潘金莲| 操逼日韩无码| 少妇一区二区三区在线观看| 偷拍片久久| 女欧美一区二三区| 91操人| 久久精品72| 性欧美91| 激情抓乳插进去啪啪啪日韩 | 强奸国产在线| 亚洲天堂东京热| 国产精品日日摸天天碰| 中文日本免费高清| 999狠狠综合| 韩日欧亚a级| 日韩无码三级影院| 人人喜人人妻| 不卡在线观看视频| 久久精品一区二区三区四区五区| 久久黄黄| 老鸭窝日丰县女人| 国产日韩手机视频在线| 久久午夜伦| 啊啊啊男女| 无码操逼视频一下| 澳门成人网站久国产日韩| 九九九九九九精品| 99性视频| 人人妻人人爽| 色蜜AV| 久操操AV电影| 久草色悠悠在线视频| a'v在线资源| 国产亚洲欧洲在线观看| 97色诱| 欧美人人曰人人操人人射射| 热久日综合| 国产高清在线观看欧美| 加勒比色综合| 97人人射| 午夜男女爽爽大片免费观看| 亚洲情色第一页| 无码天天操| 欧洲性人爱视频| 国产亚洲99久久精品| 被窝影院午夜看片无码| 先锋音影AV| 国产精品国产拍高清AV| 日本不卡一区二区| 97国产超湿| 欧美色999| 国产99999久久精品| 日本中文字幕在线视频| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 91欧美经典| 97一区二压| 青青草原人妻| 亚洲97久久精品亚洲| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 中文字幕在线观看第二页| 中文字幕人成乱码熟女香港| 91精品操美女| 久草男人天堂| www.久久99| 国产东北女人在线视频| 操东北女人| 精品一区二区久久| 日韩ab网| 国产熟女二区| 人人澡综合涩| 亚洲最大黄网| 91 综合网| av草草在线电影| 大香蕉男人的天堂| 78p欧美| 日韩熟女精品无码专区一区二区| 日本午夜精品理论片A级APP发布| 操逼免费视频无码国产| 激情抓乳插进去啪啪啪日韩 | 九九九九九九九九九五码| 自慰白浆在线观看| 一,爱啪啪,在线免费视频| 色色香蕉| 国产精品久久久久久久AV大片 | 精品久久久久久中文字幕视频免费| 热热色国产一二区AV| AV 少妇 人妻 偷拍| www.久久久久| 免费在线视频97| 涩涩五月天| 俺去啦俺来也久久综合 | 亚洲AV不卡在线观看| 99久久久久| 亚洲精品久久久久毛片A片拉屎| 国产精品青青草| 日韩人妻一二三区视频| 丝袜人妻av一区二区| 欧美青青视频| 亚洲高清欧美总合| 伊人一级免费黄片| 五月天亚洲网| 国产精品suv一区| 久久久蜜桃一区二区三区| 日本亚洲熟女视频| 亚洲一级特黄大片在线播放91| 东北女人操逼| 啊啊啊啊啊啊在线| 88在线一区二区三区| 91成人社区| 91亚洲欧美色图| 国产精品视频电影| 亚洲中文字幕97久久精品少妇| 国产粉嫩出水在线播放| 91成人久久| 久操凹凸视频| 欧洲性爱无码区| 蜜臀久久99精品久久久久久-DVD原版全| 欧美黑人与女人91| 污电影在线观看| 欧美在线色| 中文字幕诱惑制服人妻丝袜美丝袜美| 色综合中文字幕不卡| 国产欧美日韩女同性恋ww喷水精品| 99性爱| 免費黃色視頻觀看一| 国产成人无码久久精品| 一区二区三区视频在线观看免费| 中国国国产一级特黄毛片| 天堂俺去俺来也www久久婷婷| 一起草欧美| 国产操操日韩三级黄| 久久精品国产AV一区二区三区| 婷婷干黄色| 欧美天天干| 九九热久久99精品re| 色网1| AV色五月| 玖玖爱视频网站| 精品少妇一区二区| 久久精品超碰| 麻豆天美91| 国产精品久久久| 无码区蜜乳| 国产精品一级特黄aaa大片在线观看| 精品国产丝袜一区二区三区乱码| 欧美精品23| 精品一区二区人妖| 五月天久久久| 天天操天天插| 日少妇亚洲版| 国桃视频产巨乳精品一区二区在线| 9999九九九久久久| 91色人| 欧在线一二区| 国产9 9在线 | 亚洲| 八戒无码国产午夜福利| 亚洲αv一区二区三区| 开心五月婷婷激情| 秋霞免费AV| 开心激情站| 密臀AV在线| 夜夜嗨TV| 葡萄牙性视频一二区| 欧美一级美片在线观看免费| 综合操逼| 亚洲欧美大香蕉| 亚洲人妻av| 亚洲一区在线观看欧洲| 五十路六十路七十路熟婆| 国产精品久久久无码AV网站| 91狠狠综合久久| 欧美久久伊人| 私色综合网| 亚洲电影91| 蜜桃狠狠色伊人亚洲综合网站| 亚洲巨爆乳一区二区三区四季网| 温婉少妇玩3p|