日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

极客时间 算法训练营 第一周总结

發(fā)布時(shí)間:2023/12/14 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 极客时间 算法训练营 第一周总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

學(xué)習(xí)總結(jié)

學(xué)習(xí)內(nèi)容

課程內(nèi)容

  • 第三課
    • 數(shù)組
    • 鏈表
    • 跳表
  • 第四課
    • 隊(duì)列

知識(shí)點(diǎn)總結(jié)

數(shù)組

數(shù)組用一塊連續(xù)的內(nèi)存空間,來(lái)存儲(chǔ)相同類型的一組數(shù)據(jù)。
支持隨機(jī)訪問(wèn),時(shí)間復(fù)雜度 O(1)
插入、刪除操作比較低效,為了滿足連續(xù)空間需要進(jìn)行數(shù)據(jù)的搬移,平均情況時(shí)間復(fù)雜度為O(n)

鏈表
鏈表內(nèi)存空間可以不連續(xù)
鏈表類型有:單鏈表、雙向鏈表、循環(huán)鏈表、雙向循環(huán)鏈表等
更適合插入、刪除操作頻繁的場(chǎng)景,時(shí)間復(fù)雜度 O(1)
但是訪問(wèn)時(shí)需要遍歷鏈表 ,平均情況時(shí)間復(fù)雜度為O(n)
某些情況下雙向鏈表的訪問(wèn)比單鏈表更高效,如指定訪問(wèn)某個(gè)節(jié)點(diǎn)前面的節(jié)點(diǎn)
為了提高訪問(wèn)效率,用空間換時(shí)間的設(shè)計(jì)思路出現(xiàn)跳表

跳表
通過(guò)空間換時(shí)間,構(gòu)建多級(jí)索引來(lái)提高查詢的效率,實(shí)現(xiàn)了基于鏈表的“二分查找”
是一種動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),支持快速的插入、刪除、查找操作,時(shí)間復(fù)雜度為O(nlogn)


棧是一種受限的數(shù)據(jù)結(jié)構(gòu),只支持入棧和出棧操作,其入棧、出棧時(shí)間復(fù)雜度為O(1)。特點(diǎn)是先入后出。

隊(duì)列
特點(diǎn)是先入先出,常見(jiàn) 有 優(yōu)先隊(duì)列,雙端隊(duì)列

關(guān)于迭代和遞歸的一些總結(jié)

個(gè)人理解如果不同意見(jiàn)歡迎探討,如果錯(cuò)誤歡迎指正
迭代和遞歸都是要找到其重復(fù)處理單元,不同的地方是
迭代:思路是從前向后,大多數(shù)情況下使用哨兵節(jié)點(diǎn)能簡(jiǎn)化處理流程
遞歸:思路是從后向前,僅關(guān)注當(dāng)前層和下一層,重復(fù)操作就不要向下考慮太多不然容易暈

遞歸

先找重復(fù)處理單元,再找遞歸終止條件,解決了這兩個(gè)問(wèn)題就很好處理了
就鏈表處理,我將遞歸相關(guān)題目歸納為以下幾點(diǎn):

  • 先找重復(fù)處理單元
  • 遞歸終止條件
  • 遞歸前處理(遞歸到下一層前處理):
  • 遞歸(遞歸到下一層):
  • 遞歸后處理(下一層遞歸返回后處理)

具體可以參看下面的例子

迭代

同樣先找重復(fù)處理單元,再找迭代終止條件
就鏈表處理,我將迭代相關(guān)題目歸納為以下幾點(diǎn):

  • 先找重復(fù)處理單元
  • 迭代終止條件
  • 迭代前處理
  • 迭代處理
  • 迭代后處理

具體可以參看下面的例子

例子

例子 24. 兩兩交換鏈表中的節(jié)點(diǎn)

遞歸實(shí)現(xiàn)

#@author:leacoder #@des: 遞歸實(shí)現(xiàn) 兩兩交換鏈表中的節(jié)點(diǎn)'''重復(fù)處理單元: 兩兩交換 鏈表可以分為 待處理 + 當(dāng)前層正處理(兩兩交換的兩個(gè)節(jié)點(diǎn)) + 下層遞歸已處理下一層遞歸返回已處理頭結(jié)點(diǎn) 當(dāng)前層就知道: 需要交換的 a、b 兩節(jié)點(diǎn) 以及 后續(xù)已處理頭節(jié)點(diǎn)遞歸終止條件: head.next 為 None 可以將 head 為 None 的特殊情況一起做判斷 if not head or not head.next:return head遞歸前處理(遞歸到下一層前處理): 這里兩兩交換鏈表中的節(jié)點(diǎn) , 下一次遞歸從 下 兩個(gè)的結(jié)點(diǎn)開始 題 25. K 個(gè)一組翻轉(zhuǎn)鏈表 則另一種處理 可以記錄下 當(dāng)前的 next next = head.next遞歸(遞歸到下一層): 下兩位,使用遞歸前處理的 next p = swapPairs(next.next) 題 25. K 個(gè)一組翻轉(zhuǎn)鏈表 則 會(huì)有不同 遞歸后處理(下層遞歸返回后處理):1->2->3->4 2->1->4->3''' class Solution:def swapPairs(self, head: ListNode) -> ListNode:# 遞歸終止條件:if not head or not head.next:return head# 遞歸前處理(遞歸到下一層前處理):# 當(dāng)前層 需交換節(jié)點(diǎn) 為 head (a) 、head.next (b)next = head.next# 遞歸(遞歸到下一層):resultmp = self.swapPairs(next.next) # 下移兩位 返回值為兩兩交換后 兩個(gè)節(jié)點(diǎn)中的前一個(gè)節(jié)點(diǎn)# 遞歸后處理(下層遞歸返回后處理):head.next = resultmp # 兩兩交換next.next = head # 兩兩交換''' 語(yǔ)法糖head.next, next.next = self.swapPairs(next.next), head'''return next # 返回 兩兩交換后 兩個(gè)節(jié)點(diǎn)中的前一個(gè)節(jié)點(diǎn)

迭代實(shí)現(xiàn)

#@author:leacoder #@des: 迭代實(shí)現(xiàn) 兩兩交換鏈表中的節(jié)點(diǎn)''' 利用哨兵簡(jiǎn)化操作1->2->3->42->1->4->3重復(fù)處理單元: 兩兩交換 鏈表可以分為 已處理 + 正處理(兩兩交換的兩個(gè)節(jié)點(diǎn)) + 后續(xù)迭代待處理迭代終止條件: 兩兩交換,迭代處理這兩個(gè)節(jié)點(diǎn),那么后續(xù)節(jié)點(diǎn)不足兩個(gè)時(shí)跳出迭代 prev.next ,prev.next.next 為 None 迭代前處理: 利用哨兵簡(jiǎn)化操作,添加哨兵節(jié)點(diǎn) prev 最終結(jié)果 以 2->1->4->3 為例 其頭節(jié)點(diǎn)為 2 由于兩兩交換 prev 也會(huì)跟隨下移,先 用 retult = prev 記錄prev下移前的值用于最終結(jié)果返回迭代處理:1->2->3->4 為例 將需要翻轉(zhuǎn)操作的兩個(gè)節(jié)點(diǎn)記錄(要斷開連接,先記錄) a = prev.next (1) b = prev.next.next (2) 交換兩節(jié)點(diǎn) prev 節(jié)點(diǎn)下移,迭代開始新一輪處理 (由于兩兩交換,跳過(guò)兩個(gè)節(jié)點(diǎn))迭代后處理: 無(wú)特殊處理'''class Solution:def swapPairs(self, head: ListNode) -> ListNode:# 迭代前處理:prev = ListNode(None) # 哨兵prev.next = headretult = prev # 記錄 第一次被操作前的prev 用于返回結(jié)果# 迭代終止條件 prev.next ,prev.next.next 為 None while prev.next and prev.next.next: # 迭代處理:# 以 1 2 反轉(zhuǎn)為例,prev為哨兵a = prev.next # 由于 要操作 prev.next (1) 和 prev.next.next (2) 先記錄下來(lái)b = prev.next.next # 記錄 要交換的兩節(jié)點(diǎn)prev.next = b # (2)a.next = b.next # (3)b.next = a # (1)prev = a # (1) # 向下移動(dòng)2位''' 使用語(yǔ)法糖prev.next,a.next,b.next= b,b.next,a # 2個(gè)節(jié)點(diǎn)交換,注意哨兵的next改變了prev = a # 向下移動(dòng)2位'''# 迭代后處理 無(wú)return retult.next

例子 25. K 個(gè)一組翻轉(zhuǎn)鏈表

遞歸實(shí)現(xiàn)

#@author:leacoder #@des: 遞歸實(shí)現(xiàn) k個(gè)一組翻轉(zhuǎn)鏈表'''重復(fù)處理單元: k個(gè)一組翻轉(zhuǎn) 鏈表可以分為 : 待處理 + 當(dāng)前層正處理(k個(gè)一組鏈表) + 下層遞歸已處理下一層遞歸返回已處理頭結(jié)點(diǎn) 當(dāng)前層就知道: 需要翻轉(zhuǎn)k個(gè)一組鏈表的鏈表頭、鏈表尾 鏈表頭 head 參數(shù) 鏈表尾 遍歷 k 個(gè)節(jié)點(diǎn)遞歸終止條件: 后續(xù)迭代待處理剩余節(jié)點(diǎn)不足 k 個(gè)遞歸前處理(遞歸到下一層前處理): k個(gè)一組翻轉(zhuǎn)鏈表,下一次遞歸從 下 k 個(gè)節(jié)點(diǎn)開始 記錄 翻轉(zhuǎn)前的 鏈表頭 鏈表尾遞歸(遞歸到下一層): 下k位,使用遞歸前處理的 鏈表尾.next遞歸后處理(下層遞歸返回后處理): 將下一層遞歸返回結(jié)果加入到原鏈表 K 個(gè)一組鏈表翻轉(zhuǎn),''' class Solution:def reverseKGroup(self, head: ListNode, k: int) -> ListNode:# 用于記錄 翻轉(zhuǎn)前的 鏈表頭 鏈表尾end = headcount = 0# 遞歸終止條件while end and count!= k:end = end.nextcount += 1if count == k: # 遞歸終止條件# 遞歸前處理(遞歸到下一層前處理) # 記錄 翻轉(zhuǎn)前的 鏈表頭 head 鏈表尾 end 在前面已做# 遞歸(遞歸到下一層):resultmp = self.reverseKGroup(end,k) # 下層 已處理頭結(jié)點(diǎn) # 遞歸后處理(下層遞歸返回后處理)while count: # K 個(gè)一組鏈表翻轉(zhuǎn),tmp = head.nexthead.next = resultmp # 將下一層遞歸返回結(jié)果加入到原鏈表resultmp = headhead = tmpcount -= 1head = resultmp # 翻轉(zhuǎn)后鏈表頭return head

迭代實(shí)現(xiàn)

#@author:leacoder #@des: 迭代實(shí)現(xiàn) k個(gè)一組翻轉(zhuǎn)鏈表''' 利用哨兵簡(jiǎn)化操作 prev = ListNode(None) # 哨兵 prev.next = head prev 每次迭代下移(下移位數(shù)為k)重復(fù)處理單元: k個(gè)一組翻轉(zhuǎn) 鏈表可以分為 :已處理 + 正處理(k個(gè)一組鏈表) + 后續(xù)迭代待處理 正處理(k個(gè)一組鏈表)需要知道 鏈表頭和鏈表尾 鏈表頭 可以通過(guò) prev 的 next 獲取 鏈表尾 需要遍歷k個(gè)節(jié)點(diǎn)獲取迭代終止條件: 后續(xù)迭代待處理剩余節(jié)點(diǎn)不足 k 個(gè)迭代前處理: result 記錄 prev 下移前的值 用于 結(jié)果返回 end 參數(shù) 記錄尾節(jié)點(diǎn) prev、end 每次迭代指向同一節(jié)點(diǎn)迭代處理: 遍歷k個(gè)節(jié)點(diǎn)獲取 鏈表尾 構(gòu)建 k個(gè)一組鏈表 并進(jìn)行翻轉(zhuǎn) reverse() reverse() 翻轉(zhuǎn)函數(shù)返回 翻轉(zhuǎn)后新鏈表頭 將翻轉(zhuǎn)后新鏈接入原鏈表 prev 下移 end 下移迭代后處理: 無(wú)'''class Solution:def reverseKGroup(self, head: ListNode, k: int) -> ListNode:# 迭代前處理:prev = ListNode(None) # 哨兵prev.next = headresult = prevend = prev # end 記錄 k個(gè)一組鏈表 鏈表尾 prev.next 記錄 k個(gè)一組鏈表 鏈表頭# 迭代終止條件:while(end.next): # 剩余節(jié)點(diǎn)不足 k 個(gè)for i in range(k): # 遍歷k個(gè)節(jié)點(diǎn)獲取 鏈表尾 并 判斷 剩余節(jié)點(diǎn) 是否不足 k 個(gè)if not end: # 不足 k 個(gè)breakend = end.nextif not end: # 不足 k 個(gè)break'''start = prev.next # k個(gè)一組鏈表 鏈表頭next = end.next # 記錄 原 end.next end.next = None # k個(gè)一組鏈表 鏈表尾'''# 構(gòu)建 k個(gè)一組的鏈表start, next, end.next = prev.next, end.next, None# 翻轉(zhuǎn) k個(gè)一組的鏈表prev.next = self.reverse(start) # 返回 翻轉(zhuǎn)后新鏈表頭 接入原鏈表start.next = next # 接入原鏈表 start 為 翻轉(zhuǎn)后新鏈表尾prev = startend = startreturn result.nextdef reverse(self, head: ListNode):prev = Nonecurr = headwhile(curr):'''tmp = curr.nextcurr.next = prevprev = currcurr = tmp'''curr.next, prev, curr = prev, curr, curr.nextreturn prev

課后作業(yè) 改寫Deque的代碼

課程中示例代碼-Deque

代碼

import java.util.LinkedList; import java.util.Deque;public class DequeExample {public static void main(String[] args) {Deque<String> deque = new LinkedList<String>();deque.push("a");deque.push("b");deque.push("c");System.out.println(deque);String str = deque.peek();System.out.println(str);System.out.println(deque);while (deque.size() > 0) {System.out.println(deque.pop());}System.out.println(deque);} }

輸出:

[c, b, a] c [c, b, a] c b a []

接口說(shuō)明

push

public void push?(E e)

Pushes an element onto the stack represented by this list. In other words, inserts the element at the front of this list. This method is equivalent to addFirst(E).

將元素壓入此列表表示的堆棧中。換句話說(shuō),將元素插入此列表的前面。

此方法等效于addFirst(E)

pop

public E pop()

Pops an element from the stack represented by this list. In other words, removes and returns the first element of this list. This method is equivalent to removeFirst().

從此列表表示的堆棧中彈出一個(gè)元素。換句話說(shuō),刪除并返回此列表的第一個(gè)元素。
此方法等效于equivalent to removeFirst().

peek

public E peek()

Retrieves, but does not remove, the head (first element) of this list.

檢索但不刪除此列表的頭(第一個(gè)元素)。

addFirst 改寫 Deque 代碼

代碼

import java.util.LinkedList; import java.util.Deque;public class DequeExample {public static void main(String[] args) {Deque<String> deque = new LinkedList<String>();deque.addFirst("a"); // 使用 addFirst 替換 pushdeque.addFirst("b");deque.addFirst("c");System.out.println(deque);String str = deque.peek();System.out.println(str);System.out.println(deque);while (deque.size() > 0) {System.out.println(deque.removeFirst()); // 使用 removeFirst 替換 pop}System.out.println(deque);} }

輸出:

[c, b, a] c [c, b, a] c b a []

接口說(shuō)明

addFirst

void addFirst?(E e)

Inserts the specified element at the front of this deque if it is possible to do so immediately without violating capacity restrictions, throwing an IllegalStateException if no space is currently available. When using a capacity-restricted deque, it is generally preferable to use method offerFirst(E).

如果可以在不違反容量限制的情況下立即執(zhí)行此操作,則將指定的元素插入此雙端隊(duì)列的前面,如果當(dāng)前沒(méi)有可用空間,則拋出IllegalStateException。使用容量受限的雙端隊(duì)列時(shí),通常最好使用方法offerFirst(E)。

removeFirst

E removeFirst()

Retrieves and removes the first element of this deque. This method differs from pollFirst only in that it throws an exception if this deque is empty.

檢索并刪除此雙端隊(duì)列的第一個(gè)元素。此方法與pollFirst的不同之處僅在于,如果此雙端隊(duì)列為空,則它將引發(fā)異常。

Queue和PriorityQueu源碼分析

什么是 Queue

數(shù)據(jù)結(jié)構(gòu)中的隊(duì)列,先進(jìn)先出式的數(shù)據(jù)結(jié)構(gòu),所有新元素都插入隊(duì)列的末尾,移除元素都移除隊(duì)列的頭部。主要注意的時(shí),Java中的Queue是一個(gè)接口。

Queue 源碼分析

public interface Queue<E> extends Collection<E> {boolean add(E e); //往隊(duì)列插入元素,如果出現(xiàn)異常會(huì)拋出異常boolean offer(E e); //往隊(duì)列插入元素,如果出現(xiàn)異常則返回falseE remove(); //移除隊(duì)列元素,如果出現(xiàn)異常會(huì)拋出異常E poll(); //移除隊(duì)列元素,如果出現(xiàn)異常則返回nullE element(); //獲取隊(duì)列頭部元素,如果出現(xiàn)異常會(huì)拋出異常E peek(); //獲取隊(duì)列頭部元素,如果出現(xiàn)異常則返回null }

上面六個(gè)函數(shù)總體上分為兩類:安全的會(huì)進(jìn)行容量檢查的(add,remove,element),如果隊(duì)列沒(méi)有值,則取元素會(huì)拋出IlleaglStatementException異常。不安全的不進(jìn)行容量控制的(offer,poll,peek )。

AbstractQueue 是Queue 的抽象實(shí)現(xiàn)類, AbstractQueue 也繼承自 AbstractCollection 。AbstractQueue 實(shí)現(xiàn)的方法不多,主要就 add、remove、element 三個(gè)方法的操作失敗拋出了異常。

什么是 PriorityQueue

PriorityQueue 優(yōu)先級(jí)隊(duì)列, ,不同于普通的遵循FIFO(先進(jìn)先出)規(guī)則的隊(duì)列,每次都選出優(yōu)先級(jí)最高的元素出隊(duì),優(yōu)先隊(duì)列里實(shí)際是維護(hù)了這樣的一個(gè)堆,通過(guò)堆使得每次取出的元素總是最小的(用戶可以自定義比較方法,相當(dāng)于用戶設(shè)定優(yōu)先級(jí))。 PriorityQueue 是一個(gè)小頂堆,是非線程安全的;PriorityQueue不是有序的,只有堆頂存儲(chǔ)著最小的元素;從數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)看, PriorityQueue 一個(gè)數(shù)組;從邏輯結(jié)構(gòu)看, PriorityQueue 是一棵平衡二叉樹。

什么是 PriorityQueue

PriorityQueue 優(yōu)先級(jí)隊(duì)列, ,不同于普通的遵循FIFO(先進(jìn)先出)規(guī)則的隊(duì)列,每次都選出優(yōu)先級(jí)最高的元素出隊(duì),優(yōu)先隊(duì)列里實(shí)際是維護(hù)了這樣的一個(gè)堆,通過(guò)堆使得每次取出的元素總是最小的(用戶可以自定義比較方法,相當(dāng)于用戶設(shè)定優(yōu)先級(jí))。 PriorityQueue 是一個(gè)小頂堆,是非線程安全的;PriorityQueue不是有序的,只有堆頂存儲(chǔ)著最小的元素;從數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)看, PriorityQueue 一個(gè)數(shù)組;從邏輯結(jié)構(gòu)看, PriorityQueue 是一棵平衡二叉樹。

PriorityQueue 源碼分析

繼承關(guān)系

public class PriorityQueue<E> extends AbstractQueue<E>implements java.io.Serializable{// 略}

PriorityQueue 繼承了AbstractQueue 類,而AbstractQueue 類實(shí)現(xiàn)了Queue接口。

主要屬性

// 默認(rèn)容量 private static final int DEFAULT_INITIAL_CAPACITY = 11; // 存儲(chǔ)元素的數(shù)組,Object類型的 transient Object[] queue; // 元素個(gè)數(shù) int size; // 比較器 private final Comparator<? super E> comparator; // 修改次數(shù) transient int modCount;

transient Object[] queue
源碼注釋

Priority queue represented as a balanced binary heap: the two children of queue[n] are queue[2*n+1] and queue[2*(n+1)]. The priority queue is ordered by comparator, or by the elements' natural ordering, if comparator is null: For each node n in the heap and each descendant d of n, n <= d. The element with the lowest value is in queue[0], assuming the queue is nonempty.

優(yōu)先級(jí)隊(duì)列是一個(gè)平衡的二叉樹堆,queue[n]的兩個(gè)子節(jié)點(diǎn)queue[2n+1] and queue[2(n+1)]。 優(yōu)先級(jí)隊(duì)列 按照 comparator 進(jìn)行排序或者 按自然順序排序。 如果 comparator 為null ,堆中每一個(gè)節(jié)點(diǎn) n 以及 n的后代d, n<=d。假設(shè)隊(duì)列為非空,則具有最小值的元素位于queue [0]中。

常用構(gòu)造函數(shù)

  • 1、創(chuàng)建一個(gè)優(yōu)先隊(duì)列對(duì)象,默認(rèn)大小,隊(duì)列中的元素按照自然順序排序。
public PriorityQueue() {this(DEFAULT_INITIAL_CAPACITY, null);}
  • 2、創(chuàng)建一個(gè)指定大小的優(yōu)先隊(duì)列對(duì)象,隊(duì)列中的元素按照自然順序排序。
public PriorityQueue(int initialCapacity) {this(initialCapacity, null);}
  • 3、創(chuàng)建一個(gè)默認(rèn)大小(11)的優(yōu)先隊(duì)列對(duì)象,隊(duì)列中的元素按照指定比較器進(jìn)行排序。
public PriorityQueue(Comparator<? super E> comparator) {this(DEFAULT_INITIAL_CAPACITY, comparator);}
  • 4、根據(jù)指定的大小和比較器來(lái)創(chuàng)建一個(gè)優(yōu)先隊(duì)列對(duì)象。
public PriorityQueue(int initialCapacity,Comparator<? super E> comparator) {// Note: This restriction of at least one is not actually needed,// but continues for 1.5 compatibilityif (initialCapacity < 1)throw new IllegalArgumentException();this.queue = new Object[initialCapacity];this.comparator = comparator;}

add(e)/offer(e)方法介紹

add方法
插入一個(gè)元素到優(yōu)先隊(duì)列中

add方法的源代碼如下:

public boolean add(E e) {return offer(e); }

從源碼中可以看出add方法直接調(diào)用了offer方法。

offer(e)方法

public boolean offer(E e) {if (e == null) //檢查是否為null, 如果為null 則拋空指針異常throw new NullPointerException();modCount++;int i = size;if (i >= queue.length) // 檢查容量是否足夠, 不足進(jìn)行擴(kuò)容grow(i + 1); // 擴(kuò)容函數(shù)siftUp(i, e); // 在數(shù)組的末尾插入新的元素,向上調(diào)整,使之保持為二叉堆的特性。size = i + 1;return true; }

1)首先檢查要添加的元素e是否為null,如果為null,則拋空指針異常,如果不為null,則進(jìn)行2
2)判斷數(shù)組是否已滿,如果已滿,則進(jìn)行擴(kuò)容,否則將元素加入到數(shù)組末尾即可。
由于這個(gè)數(shù)組表示的是一個(gè)“二叉堆”,因此還需要進(jìn)行相應(yīng)的調(diào)整操作,使得這個(gè)數(shù)組在添加元素之后依然保持的是二叉堆的特性。

grow(int minCapacity)方法

//增加數(shù)組的容量 private void grow(int minCapacity) {int oldCapacity = queue.length;// Double size if small; else grow by 50%//如果比較小,則擴(kuò)容為原來(lái)的2倍,否則只擴(kuò)容為原來(lái)的1.5倍int newCapacity = oldCapacity + ((oldCapacity < 64) ?(oldCapacity + 2) :(oldCapacity >> 1));// overflow-conscious codeif (newCapacity - MAX_ARRAY_SIZE > 0)newCapacity = hugeCapacity(minCapacity);queue = Arrays.copyOf(queue, newCapacity); }

hugeCapacity(int minCapacity) 方法

private static int hugeCapacity(int minCapacity) {if (minCapacity < 0) // overflowthrow new OutOfMemoryError();return (minCapacity > MAX_ARRAY_SIZE) ?Integer.MAX_VALUE :MAX_ARRAY_SIZE; }

注:
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;

public static final int MAX_VALUE = 0x7fffffff;

當(dāng) 大于 MAX_ARRAY_SIZE 時(shí)擴(kuò)容記性了特殊處理

siftUp(int k, E x)方法

將元素x插入到queue[k]位置上,并進(jìn)行調(diào)整使之具有二叉堆特性

private void siftUp(int k, E x) {if (comparator != null)siftUpUsingComparator(k, x); // 使用比較器 comparatorelsesiftUpComparable(k, x); }

siftUpUsingComparator和siftUpComparable源碼如下

從 位置 k 向數(shù)組起始位置 調(diào)整使之具有二叉堆特性,自下而上的堆化,

也就是 二叉堆插入元素思想操作:

可參見(jiàn) 拜托,面試別再問(wèn)我堆(排序)了!

siftUpComparable(int k, E x)方法

@SuppressWarnings("unchecked") private void siftUpComparable(int k, E x) {Comparable<? super E> key = (Comparable<? super E>) x;while (k > 0) {int parent = (k - 1) >>> 1; // 找 parent 父節(jié)點(diǎn)Object e = queue[parent];if (key.compareTo((E) e) >= 0) // 比較 按 自然順序 排列break;queue[k] = e; k = parent; }queue[k] = key; }

siftUpUsingComparator(int k, E x)方法

@SuppressWarnings("unchecked") private void siftUpUsingComparator(int k, E x) {while (k > 0) {int parent = (k - 1) >>> 1;Object e = queue[parent];if (comparator.compare(x, (E) e) >= 0) // 使用比較器 comparatorbreak;queue[k] = e;k = parent;}queue[k] = x; }

poll()方法介紹

取出優(yōu)先隊(duì)列中的第一個(gè)元素

public E poll() {if (size == 0) // 優(yōu)先隊(duì)列大小判斷return null;int s = --size;modCount++;E result = (E) queue[0]; // 取出第一個(gè)元素E x = (E) queue[s]; // 取出最后一個(gè)元素queue[s] = null;if (s != 0)siftDown(0, x); return result; }

poll方法:取出queue[0]元素,然后將queue[size-1]插入到queue[0],然后自上而下堆化來(lái)保持二叉堆的特性。

siftDown(int k, E x)方法

//將元素x存儲(chǔ)在queue[k],并進(jìn)行相應(yīng)的調(diào)整 private void siftDown(int k, E x) {if (comparator != null)siftDownUsingComparator(k, x);elsesiftDownComparable(k, x); }

siftDownComparable(int k, E x)方法

private void siftDownComparable(int k, E x) {Comparable<? super E> key = (Comparable<? super E>)x;int half = size >>> 1; // loop while a non-leafwhile (k < half) {int child = (k << 1) + 1; // assume left child is leastObject c = queue[child];int right = child + 1;if (right < size &&((Comparable<? super E>) c).compareTo((E) queue[right]) > 0) //兩個(gè)兒子節(jié)點(diǎn)較小的那一個(gè)c = queue[child = right];if (key.compareTo((E) c) <= 0)break;queue[k] = c;k = child;}queue[k] = key; }

siftDownUsingComparator(int k, E x)方法

private void siftDownUsingComparator(int k, E x) {int half = size >>> 1;while (k < half) {int child = (k << 1) + 1;Object c = queue[child];int right = child + 1;if (right < size &&comparator.compare((E) c, (E) queue[right]) > 0)c = queue[child = right];if (comparator.compare(x, (E) c) <= 0)break;queue[k] = c;k = child;}queue[k] = x; }

remove(Object o) 方法介紹

移除指定元素

public boolean remove(Object o) {int i = indexOf(o); // 判斷位置if (i == -1) //沒(méi)有在數(shù)組中找到return false;else {removeAt(i); //進(jìn)行刪除并調(diào)整return true;} }

indexOf(Object o)方法

private int indexOf(Object o) {if (o != null) {for (int i = 0; i < size; i++) // 數(shù)組遍歷過(guò)程if (o.equals(queue[i]))return i;}return -1; }

找到對(duì)象o在數(shù)組中出現(xiàn)的第一個(gè)索引

emoveAt(int i)方法

E removeAt(int i) {// assert i >= 0 && i < size;modCount++;int s = --size;if (s == i) // removed last elementqueue[i] = null;else {E moved = (E) queue[s]; // 取出最后一個(gè)元素queue[s] = null;siftDown(i, moved); //從i向下調(diào)整堆if (queue[i] == moved) { // 如果發(fā)現(xiàn)調(diào)整后 moved 還在 i 位置沒(méi)有下沉,向上調(diào)整看是否上浮siftUp(i, moved);if (queue[i] != moved)return moved;}}return null; }

堆插入元素與刪除堆頂元素操作

以下面這個(gè)對(duì)為例

用數(shù)組來(lái)存儲(chǔ)為:

插入元素

往堆中插入一個(gè)元素后,需要繼續(xù)滿足堆的兩個(gè)特性,即:

(1)堆是一顆完全二叉樹;
(2)堆中某個(gè)節(jié)點(diǎn)的值總是不大于(或不小于)其父節(jié)點(diǎn)的值。

把元素插入到最后一層最后一個(gè)節(jié)點(diǎn)往后一位的位置,也就是在數(shù)組的末尾插入新的元素
,插入之后可能不再滿足條件(2),這時(shí)候我們需要調(diào)整,自下而上的堆化。

上面那個(gè)堆插入元素2,我們把它放在9后面,這時(shí)不滿足條件(2)了,我們就需要堆化。(這是一個(gè)小頂堆)


從插入元素的過(guò)程,我們知道每次與 n/(2x)n/(2^x)n/(2x) 的位置進(jìn)行比較,所以,插入元素的時(shí)間復(fù)雜度為 O(logn)O(log n)O(logn)。

刪除堆頂元素

刪除了堆頂元素后,要使得還滿足堆的兩個(gè)特性。把最后一個(gè)元素移到根節(jié)點(diǎn)的位置,這時(shí)候就滿足條件(1),之后就需要堆化了使它滿足條件(2)


從刪除元素的過(guò)程,我們知道把最后一個(gè)元素拿到根節(jié)點(diǎn)后,每次與 2n2n2n(2n+1)(2n+1)(2n+1) 位置的元素比較,取其小者,所以,刪除元素的時(shí)間復(fù)雜度也為 O(logn)O(log n)O(logn)

回到 remove(Object o) 方法 ,不是刪除堆頂元而是刪除指定元素,源碼中會(huì)先找Object o在數(shù)組中位置 i,再取出最后一個(gè)元素從i自上而下堆化,如果最后一個(gè)元素沒(méi)有下沉,會(huì)從i自下而上堆化

總結(jié)

以上是生活随笔為你收集整理的极客时间 算法训练营 第一周总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

蜜臀av在线一区二区三区 | 日本视频久久久 | 国产区欧美 | 亚洲在线网址 | 久久99精品久久久久蜜臀 | 日韩精品一区二区三区高清免费 | 欧美精品中文 | 久久久国产毛片 | 久久精品看| 亚洲精品国产成人av在线 | 色网站在线 | 99久久久久免费精品国产 | 9999亚洲| 91精品国产一区 | 午夜999| 国产精品综合在线 | 中文字幕在线看视频国产 | 国产亚洲欧美日韩高清 | 麻豆国产精品视频 | av女优中文字幕在线观看 | 亚洲高清视频在线 | 91视频88av| www视频在线免费观看 | 天天干干 | 国产高清成人 | 黄色大全免费网站 | 欧美性色19p| 三级黄色理论片 | 久久精品在线视频 | 久久综合久久综合久久 | 久久精品香蕉 | 波多野结衣一区二区三区中文字幕 | 日韩在线电影一区 | 中文字幕日韩精品有码视频 | 亚洲精品国产欧美在线观看 | 久久精品99国产国产精 | 又黄又爽又刺激 | av成人资源| 97免费在线视频 | 国产一级片免费视频 | 天天天色综合a | 超碰在线观看97 | 五月婷婷激情六月 | 成年人免费av网站 | 激情校园亚洲 | 丁香五月亚洲综合在线 | 成年人国产精品 | 国产精品免费观看国产网曝瓜 | 在线观看黄色的网站 | 国产资源免费在线观看 | 国产99久久久久 | 99色婷婷 | 在线观看网站黄 | 国产精品美女久久久久久久网站 | 中文字幕亚洲综合久久五月天色无吗'' | 久久久999精品视频 国产美女免费观看 | 99久久精品一区二区成人 | 六月色丁香 | 国产在线传媒 | 国产精品美女毛片真酒店 | 精品国产人成亚洲区 | 国产精品久久久久久久久婷婷 | 中文字幕 第二区 | aaa亚洲精品一二三区 | 中文字幕在线观看第三页 | 深爱激情五月网 | 婷婷久久一区 | 色99导航 | 在线视频 影院 | 欧美最新大片在线看 | 国产日韩精品欧美 | www五月婷婷| av电影在线免费观看 | 日韩欧美一区二区三区黑寡妇 | 免费网站观看www在线观看 | 天天干天天插 | 成人av网站在线 | 欧美特一级 | 欧美日韩一级视频 | 日本精品视频一区二区 | 丁香花在线观看视频在线 | 五月激情在线 | 99电影 | 免费视频你懂得 | 中文字幕 国产视频 | 国产高清在线a视频大全 | 久久官网 | 久久精品电影 | 亚洲午夜不卡 | 天天操天天干天天爽 | 久久综合中文字幕 | 欧美性生活大片 | 91热爆在线观看 | 日韩网站一区二区 | 91精品国产电影 | 国产精品久久久久久久毛片 | 国产青草视频在线观看 | 黄色片网站 | 久久综合久久88 | 怡红院成人在线 | 日韩在线视频线视频免费网站 | 人人舔人人插 | 日韩一区二区三区视频在线 | 97超碰人人澡人人 | 亚洲综合色av | 波多野结衣电影一区二区三区 | 亚洲另类在线视频 | 亚洲国产精品久久久 | 一本一道久久a久久精品蜜桃 | 精品女同一区二区三区在线观看 | 国产精品资源在线观看 | 久久精品国产一区二区 | 日韩电影在线一区 | 五月天激情开心 | 操久在线 | 精品国内自产拍在线观看视频 | 国产久视频 | 日韩高清国产精品 | 精品国产区在线 | 欧美做受高潮电影o | 日韩午夜剧场 | 亚洲精品在线视频网站 | 天天干天天干天天射 | 久久久久久久久久久久久9999 | 婷婷五天天在线视频 | 在线观看中文字幕2021 | 成人a免费视频 | 日韩女同av | 日韩成人av在线 | 六月色丁香 | 亚洲 中文 欧美 日韩vr 在线 | 黄色91在线观看 | 日韩欧美电影 | 人人爽人人舔 | 国产天天爽 | 亚洲精品国产欧美在线观看 | 一级a毛片高清视频 | 中日韩三级视频 | 成人av在线影视 | 黄色软件视频网站 | 国产五月 | 91原创在线观看 | 天天色天天骑天天射 | 91麻豆精品91久久久久同性 | 亚洲一级性 | 精品国产91亚洲一区二区三区www | 97av超碰| 久久另类小说 | 久久大视频 | 亚洲二区精品 | 亚洲综合色婷婷 | 亚洲国产99| 97超碰.com| 91黄色在线观看 | 国产艹b视频 | 日韩精品久久久久久中文字幕8 | 91在线中文| 五月婷婷丁香在线观看 | 国产精品自产拍在线观看蜜 | 久草视频免费 | 欧美小视频在线观看 | 9999精品 | 免费视频黄色 | 麻豆91在线观看 | 18国产精品福利片久久婷 | 久久人人爽 | 国产精品综合久久久久久 | 91成年人视频 | 久久久午夜剧场 | 国产一级淫片在线观看 | 亚洲女人天堂成人av在线 | 久久五月天综合 | 日韩精品不卡在线 | 成年人免费看片网站 | 色综合夜色一区 | 国产a级精品 | 热热热热热色 | 精品999久久久 | 深爱五月网| 中文字幕第一页在线播放 | 日本午夜在线亚洲.国产 | 成人久久免费视频 | 日日夜夜亚洲 | 激情五月婷婷激情 | 亚洲精品午夜aaa久久久 | 精品一区免费 | 亚洲一区不卡视频 | 欧美一级片播放 | 国产亚洲在线 | 国产精品高潮呻吟久久久久 | 久草在线免费色站 | 99在线高清视频在线播放 | 日本性生活免费看 | 在线看国产日韩 | 日韩中文字幕a | 特级西西人体444是什么意思 | 五月婷婷丁香网 | 国产精品久久毛片 | 99综合电影在线视频 | 天天操天天干天天爱 | 97中文字幕 | 欧美国产一区在线 | 97爱爱爱 | 国产免费看| 又黄又爽又刺激 | 成年人天堂com | 国产一级在线 | 99视频在线看 | 久久国产精品久久久久 | 亚洲人久久久 | 久久精品人人做人人综合老师 | 国产精品一区二区在线免费观看 | 午夜视频一区二区 | 亚洲好视频 | 欧美一级片在线播放 | 热re99久久精品国产66热 | www.色综合.com | 免费的黄色的网站 | 看全黄大色黄大片 | 久久久久久国产一区二区三区 | av片一区 | 欧美大片在线看免费观看 | 国产精品久久久久久久久久免费 | 亚洲蜜桃av | 天天干天天操天天 | 欧美久草在线 | 欧美日韩一区二区三区在线观看视频 | 精品久久一区二区 | 中文字幕丰满人伦在线 | 国产精品一区在线观看你懂的 | 日韩精品久久一区二区三区 | 在线观看视频国产一区 | 亚洲欧美日韩国产 | 天天操夜夜曰 | 91大神免费在线观看 | wwwww.国产| 美女性爽视频国产免费app | 色干干| 精品999在线| 国产精品理论片在线播放 | 精品一区二区免费在线观看 | 久久免费精品一区二区三区 | 九9热这里真品2 | 在线观看久久 | 五月天色站 | 92中文资源在线 | 超碰在线日韩 | 在线天堂v | 精品在线播放 | 国产综合激情 | 久久综合影院 | 97视频在线观看播放 | 99久久久国产精品免费观看 | av天天澡天天爽天天av | 中文在线中文a | adn—256中文在线观看 | 亚洲男男gaygay无套同网址 | 久久成人免费视频 | 国产精品va最新国产精品视频 | 人人网人人爽 | 国产精品成人自产拍在线观看 | 中文字幕第一页在线播放 | 99久精品视频 | 日韩av有码在线 | 国产精品一区二区吃奶在线观看 | 国产夫妻性生活自拍 | 97碰碰精品嫩模在线播放 | 久久久久免费精品视频 | 久久视了 | 久久黄色影院 | 黄色a视频 | 97在线视频免费看 | 免费福利片2019潦草影视午夜 | 十八岁免进欧美 | 六月色丁香 | 日韩中文字幕国产 | 久久精品欧美一 | 国产香蕉97碰碰碰视频在线观看 | 国产成人精品一区二区 | 国产一级黄色电影 | 欧美日韩高清不卡 | 日韩一区二区久久 | 综合色婷婷 | 日韩精品视频在线观看免费 | 久久久久久久亚洲精品 | 亚洲视频 视频在线 | 热久久影视 | 国产一区二区在线免费 | 日韩三级免费 | 中文字幕久久精品亚洲乱码 | 手机看片99 | 麻豆91视频 | 欧美成人黄 | 色久网 | 正在播放国产精品 | 国产一区二区三区免费在线观看 | 99午夜 | 欧美日韩高清一区二区 国产亚洲免费看 | 日本精品中文字幕 | 69国产精品视频 | 久久只精品99品免费久23小说 | 成人av片在线观看 | 国产一在线精品一区在线观看 | 国产成人精品日本亚洲999 | 欧洲黄色片 | 99国产精品久久久久久久久久 | 欧美激情精品久久久久久变态 | av片一区| 亚洲国产资源 | 五月婷婷av在线 | 久久夜色精品国产欧美乱极品 | 日韩高清免费观看 | 人人爽人人乐 | 午夜在线观看一区 | 亚洲精品字幕在线 | 超碰99人人 | 国产高清视频在线 | 草久在线观看视频 | 欧美精品久久久久久久免费 | 免费观看成年人视频 | 久久国产午夜精品理论片最新版本 | 日日干夜夜爱 | 成人超碰97 | www成人精品 | 亚洲欧美成人在线 | 亚洲国产剧情av | 久久综合九色综合97_ 久久久 | 国产美女免费观看 | a v在线观看 | 欧美激情精品久久久久久 | 在线观看免费版高清版 | 色婷婷天天干 | 最近最新中文字幕 | 狠狠插狠狠干 | 亚洲久草网| www日日夜夜| 国产精品欧美日韩 | 久久综合久久综合这里只有精品 | 午夜精品一区二区三区免费 | 欧美成人h版电影 | 亚洲精品中文字幕视频 | 人人插人人搞 | 精品在线观看国产 | 午夜在线免费视频 | 一区二区在线影院 | 日本精品一区二区在线观看 | 国产999久久久 | 欧美怡红院视频 | 国产成人在线观看免费 | 国产精品久久久久久久免费观看 | 日韩欧美视频在线观看免费 | 伊人婷婷网 | 国产在线精 | 国产一区黄色 | 免费视频网 | 免费高清在线观看成人 | 狠狠躁日日躁 | 免费观看一区 | 国产成人黄色网址 | 日本最新高清不卡中文字幕 | 97国产超碰在线 | 天堂av在线中文在线 | 久久99精品久久只有精品 | 99久高清在线观看视频99精品热在线观看视频 | 久草在线视频网站 | 美女精品 | 天天干人人 | 精品国产一区二区三区男人吃奶 | 在线观看视频在线 | www.夜夜爱| av福利网址导航大全 | 五月婷在线 | 韩日三级av | 久久99影院 | 免费观看一区 | 人人插人人玩 | av电影在线不卡 | 中文字幕视频三区 | 免费黄色在线网址 | 天天干天天射天天操 | 亚洲美女在线一区 | 99精品视频在线免费观看 | 91视频免费网址 | 国产色在线观看 | 国产视频在线免费观看 | 久久久久电影网站 | 亚洲精品国产精品国产 | 国产日韩精品一区二区在线观看播放 | 亚洲毛片久久 | www日韩精品 | 99精彩视频 | 亚洲精品欧美成人 | 国产小视频在线观看 | 日本成址在线观看 | 免费观看的黄色片 | 人人爽人人澡人人添人人人人 | 四虎永久免费 | 久久精品中文字幕 | 国产在线97 | 久久久免费毛片 | 美女网站视频色 | 人人插人人做 | 久久久久免费观看 | a天堂中文在线 | a'aaa级片在线观看 | 中文字幕专区高清在线观看 | 国产亚洲欧美在线视频 | 国际精品久久 | 九九天堂 | 精品二区视频 | 在线电影av | 国产精品九九九九九九 | 精品999 | 欧美综合久久久 | 美女在线免费观看视频 | 亚洲一级黄色av | 日韩高清不卡在线 | 亚洲美女精品 | 在线免费观看一区二区三区 | 国产青青青 | 91麻豆文化传媒在线观看 | 国产黄色电影 | 高清免费在线视频 | 日韩专区一区二区 | 天天干 天天摸 天天操 | 在线观看色视频 | 精品国偷自产在线 | 亚洲精选在线 | 国产精品日韩在线 | 国产精品一区久久久久 | 91在线视频网址 | 99久久精品费精品 | 奇米网777| 欧美性极品xxxx做受 | 99精品久久久久 | 91粉色视频| 日韩精品免费在线 | 国产一级高清 | 婷婷激情av | 精品一区二区三区在线播放 | 成人av久久 | 精品亚洲免费 | 婷婷五月色综合 | 亚州精品天堂中文字幕 | 伊人影院av | 国产精品一区二区久久 | 国产精品av一区二区 | 久操97| 婷婷激情影院 | 免费在线观看成人av | 91亚洲欧美 | japanesexxxhd奶水| 国产成人精品一区二区在线 | 久久avav| 亚洲视频精品在线 | www免费视频com━ | 久久久久免费观看 | 在线91观看 | 久久免费一 | 天堂av免费看| 五月婷婷久久丁香 | 国产福利在线免费 | 成人欧美一区二区三区黑人麻豆 | 91亚色视频 | 狠狠狠色丁香婷婷综合久久五月 | 狠狠干婷婷色 | 日本99热 | 草久热| 狠狠躁夜夜躁人人爽视频 | 久久久久北条麻妃免费看 | 激情综合色综合久久综合 | 国产色综合天天综合网 | 手机av在线不卡 | 久久午夜电影网 | 91免费网站在线观看 | 韩日色视频 | 天天操天天操天天操天天操天天操 | 日韩在线三区 | 色婷婷成人 | 日韩高清在线一区二区 | 婷婷久久亚洲 | 在线观看免费黄视频 | 欧美a级一区二区 | 久久精品91久久久久久再现 | 九九九九热精品免费视频点播观看 | 天天干天天干天天干 | 欧美9999 | 国产成人精品综合久久久久99 | 国产传媒一区在线 | 欧美日韩国产二区三区 | 丁香六月婷 | 99精品国产99久久久久久福利 | 亚洲一区欧美激情 | 狠狠躁日日躁狂躁夜夜躁av | 人人澡人人添人人爽一区二区 | 人人草在线视频 | 91精品毛片| 久草9视频 | 久久精品国产一区二区 | 亚洲精品乱码久久久久久蜜桃91 | 欧美一区二区在线免费观看 | 国产999视频在线观看 | 成人av免费网站 | 日本高清久久久 | 毛片基地黄久久久久久天堂 | 日韩不卡高清视频 | a视频在线看 | 中文超碰字幕 | 国产91学生| 91大神精品视频在线观看 | 日韩极品在线 | 久久成人欧美 | 亚洲欧洲精品一区 | av福利在线导航 | 日韩久久一区 | 久久激情久久 | 国产日韩欧美视频 | 中文字幕在线有码 | www国产亚洲精品久久麻豆 | 国产精品美女久久久久久久 | 精品视频不卡 | 99精品国产一区二区三区麻豆 | 国产在线观看99 | 久久国产精品一区二区 | 日本成人黄色片 | 国产精品久久电影网 | 91免费在线 | 狠狠亚洲| 久久久久久草 | 国产福利一区在线观看 | 黄色大片入口 | 久久综合欧美 | 国产精品2019| 人成午夜视频 | 91麻豆看国产在线紧急地址 | 高潮久久久久久久久 | 国产精品久久精品国产 | 中文字幕免费在线 | 三级av片| 精品国产亚洲一区二区麻豆 | 精品99在线| 丁香花中文在线免费观看 | 国产精品欧美一区二区三区不卡 | 欧美日韩不卡在线观看 | 免费a现在观看 | 成人久久18免费网站麻豆 | 黄色a在线 | 日本资源中文字幕在线 | 成人免费观看完整版电影 | 不卡的av电影在线观看 | 国产精品久一 | 99久久久成人国产精品 | 国产高h视频 | av免费片| 69国产盗摄一区二区三区五区 | 免费观看一区 | 日本亚洲国产 | 午夜精品福利影院 | 免费黄在线观看 | 亚洲精品久久久蜜臀下载官网 | 五月天色婷婷丁香 | 国产日本在线播放 | 亚洲精品自拍视频在线观看 | 成人av中文字幕 | www.综合网.com | 亚洲精品国产精品99久久 | 国产成人精品久久二区二区 | 在线涩涩| 超碰在线公开免费 | 久久综合久久综合久久综合 | 国产中文字幕视频在线观看 | 激情网五月婷婷 | 国产99久久九九精品免费 | 亚洲精品久久久久www | 激情综合五月 | 国产美女视频免费 | 国产精品一区二区av | 国产精品 亚洲精品 | 欧美午夜理伦三级在线观看 | 免费在线观看不卡av | 国产91精品看黄网站在线观看动漫 | 婷婷视频在线播放 | 五月激情丁香婷婷 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产成人精品在线播放 | 免费看v片网站 | 中文字幕乱码电影 | 欧美日韩免费观看一区二区三区 | 97在线看| 一区二区三区播放 | av中文电影 | 国产五十路毛片 | 亚洲三级黄色 | a在线观看国产 | 国产涩涩在线观看 | 日韩天天综合 | 天天综合久久综合 | 久久成人免费视频 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 麻豆91在线观看 | 亚洲国产精品va在线看黑人 | 日韩乱码中文字幕 | 久久久国产精品一区二区三区 | 97超碰国产在线 | 在线观看亚洲视频 | 尤物97国产精品久久精品国产 | a视频在线播放 | 中文一区二区三区在线观看 | 欧美一区在线观看视频 | 欧美在线观看视频一区二区三区 | 手机av网站| 一区二区三区在线免费 | 黄色tv视频| 亚洲影视九九影院在线观看 | 国产尤物一区二区三区 | 99精品偷拍视频一区二区三区 | 亚洲国产网站 | 欧美一区,二区 | 日韩精品在线免费观看 | 国产一级性生活视频 | 精品在线视频观看 | 最新日韩视频 | 色久av| 久久五月天婷婷 | 9在线观看免费高清完整 | 国产在线91在线电影 | 91亚洲精品久久久蜜桃借种 | 国模视频一区二区三区 | 综合久久久久久久 | 免费手机黄色网址 | 在线观看午夜 | 色在线观看网站 | 日韩理论在线播放 | 精品国产一区二区三区久久久蜜臀 | 视频一区在线播放 | 伊人成人激情 | 这里只有精品视频在线观看 | 天天爱天天射 | 欧美久久99 | 久久99日韩 | 一区二区三区国产欧美 | 91精品视频导航 | 中文av在线免费观看 | 在线国产高清 | 精品国产一区二区三区久久久蜜月 | 亚洲狠狠 | 免费三级大片 | 精品视频一区在线观看 | 亚州精品天堂中文字幕 | 免费亚洲成人 | 精品视频资源站 | 婷婷九月丁香 | 色综合五月天 | 狠狠干综合 | 91视频首页| 国产精品欧美激情在线观看 | 999超碰 | 黄色片网站av| 午夜在线看片 | 草久久久 | 狠狠操狠狠操 | 久久99最新地址 | 69精品久久久 | 国产精品一区二区中文字幕 | 亚洲九九 | 国产在线精品一区二区 | 日日婷婷夜日日天干 | 日韩精品一卡 | 日韩免费一区二区在线观看 | 四虎www | 色噜噜狠狠狠狠色综合久不 | 日日夜夜精品视频天天综合网 | 国产精品亚洲片在线播放 | 久久精品一区二区三区视频 | 国产精品va视频 | 久久久久免费精品国产 | 国内外成人在线视频 | 四虎永久国产精品 | 天天色天天操综合网 | 久草| 91av视频 | 久久女教师 | 国产婷婷 | 国产精品亚洲视频 | 91亚洲狠狠婷婷综合久久久 | 免费麻豆视频 | 最近免费中文字幕 | av在线网站免费观看 | 欧美另类v | 992tv又爽又黄的免费视频 | 97热在线观看 | 成人在线观看日韩 | 国产精品av免费在线观看 | 亚洲精品美女在线观看 | 波多野结衣在线视频一区 | 国产色视频网站2 | 亚洲天天综合网 | 久久视频中文字幕 | 婷婷久操 | 欧美精品在线视频观看 | 91理论片午午伦夜理片久久 | 成人在线免费视频观看 | 久久在线精品视频 | 在线欧美中文字幕 | 欧美激情综合五月色丁香 | 四川妇女搡bbbb搡bbbb搡 | 国产成人一区二区三区影院在线 | 久草影视在线观看 | 超碰在线免费97 | 免费在线播放视频 | 国产中文字幕在线视频 | www.久久久久 | 精品五月天 | 97在线影视 | 欧美精品午夜 | 欧美性生活一级片 | 91在线精品一区二区 | 天天鲁一鲁摸一摸爽一爽 | 欧美一区二区三区在线视频观看 | 一区二精品 | 最近日本韩国中文字幕 | 中文在线天堂资源 | 国产精品99久久免费黑人 | 精品国产视频在线观看 | 中文字幕在线免费观看视频 | 国产亚洲欧美一区 | 久草在线高清视频 | 国产一区二区三区久久久 | 伊人亚洲精品 | 亚洲春色综合另类校园电影 | 国产黄色片免费 | 黄色免费观看视频 | 亚洲精品小视频 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 精品国产成人av | 亚洲精品综合在线观看 | 在线成人免费电影 | 97免费中文视频在线观看 | 成人毛片一区 | 国产欧美久久久精品影院 | 色妞久久福利网 | 国产乱老熟视频网88av | 久久夜视频 | 精品五月天 | 日本爱爱免费视频 | 在线黄色免费 | 午夜骚影| 日韩av成人免费看 | 国产成人99av超碰超爽 | 国产一二三四在线观看视频 | 日本久久影视 | 欧美色图另类 | 日日干天天爽 | 精品久久一二三区 | 中文字幕av在线不卡 | 免费又黄又爽视频 | 亚洲3级| 中文字幕亚洲精品在线观看 | 国产精品成人国产乱 | 97视频在线 | 国产精品免费观看久久 | 午夜精品av| 91精品国产自产在线观看永久 | 91资源在线播放 | 国产精品激情 | 国产黄色av网站 | 天天色影院 | 激情综合网天天干 | 国产在线观看,日本 | 欧美日韩伦理在线 | 国产精品福利在线 | 天堂在线视频中文网 | 成人全视频免费观看在线看 | 国产精品热| 97超碰人人看 | 久久久久成人免费 | 久久精品中文字幕 | 国产一区二区高清不卡 | 欧美网址在线观看 | 久久久久久久久久网站 | 999久久久免费视频 午夜国产在线观看 | 国产成a人亚洲精v品在线观看 | 五月天久久 | 17婷婷久久www | 国产色网站 | 成全免费观看视频 | 黄色免费网站大全 | 99视频在线免费 | 国产成人av福利 | 亚洲精品乱码久久久久久蜜桃动漫 | 青春草视频在线播放 | 亚洲精品女人久久久 | 成年人在线观看 | .国产精品成人自产拍在线观看6 | 久久不射网站 | 成人黄色大片在线免费观看 | 欧美色图p | 香蕉网在线观看 | 啪一啪在线 | 麻豆视频免费网站 | 不卡的一区二区三区 | 在线免费色 | 国产精品91一区 | 国产又黄又爽无遮挡 | 免费日韩 精品中文字幕视频在线 | 在线观看成人网 | 久久午夜网| 日韩激情免费视频 | 久久久久国产精品一区 | 成年人在线免费看片 | 九九久久成人 | 久久免费观看视频 | 超碰97国产精品人人cao | 99视频| 国产99久久精品一区二区300 | 色综合亚洲精品激情狠狠 | 欧美日韩精品在线免费观看 | 国产另类xxxxhd高清 | 国产主播99 | 黄色录像av| 日韩久久精品一区二区三区 | 精品国产91亚洲一区二区三区www | 涩涩网站在线播放 | 国产性天天综合网 | 国产不卡视频在线 | 在线免费视频 你懂得 | av在线进入 | 国产精品永久免费 | 国色天香永久免费 | 91九色蝌蚪在线 | 亚洲永久国产精品 | 国产精品久久久久久久久久妇女 | 欧美成人免费在线 | 日韩亚洲国产中文字幕 | 911亚洲精品第一 | 久草在线视频免费资源观看 | 国产一区在线精品 | 国产高清区 | 97碰在线视频 | 日日操夜夜操狠狠操 | 一区二区高清在线 | 免费成人在线网站 | 国产午夜精品一区 | 久久在线视频在线 | 97超碰中文 | 日韩精品久久中文字幕 | 国产精品成久久久久 | av免费观看高清 | 91夫妻视频 | 国产中文字幕视频在线 | 国产精品理论在线观看 | 久久人人添人人爽添人人88v | 亚洲在线精品视频 | 视频91在线 | 在线观看v片 | 欧美日韩有码 | 国语自产偷拍精品视频偷 | 日韩欧美成人网 | 久人人| 涩涩网站在线观看 | 日韩av一区二区三区在线观看 | 500部大龄熟乱视频使用方法 | 视频一区在线免费观看 | 午夜av片| 国产淫a| 久久婷婷激情 | 2017狠狠干 | 日韩久久精品一区二区 | 国产一区二区三区四区在线 | av电影在线观看 | 久久不射电影院 | 在线观看视频在线观看 | 青春草免费在线视频 | 亚洲少妇激情 | 亚洲另类xxxx| 999视频精品| 丁香在线观看完整电影视频 | 操处女逼 | 欧美日韩免费观看一区=区三区 | 成人免费在线播放 | 国内精品福利视频 | 国产中文伊人 | 国产又粗又长又硬免费视频 | 99操视频 | 99热精品久久 | 91视频免费视频 | 不卡的av在线播放 | 久久97久久97精品免视看 | 男女激情免费网站 | www免费在线观看 | 色香蕉在线 | 黄色精品久久久 | 激情网综合 | 91久久久久久久 | 日韩一级成人av | 亚洲综合色婷婷 | 精品国产伦一区二区三区观看体验 | 波多野结衣综合网 | 欧美尹人 | 亚洲第一香蕉视频 | 国产原创中文在线 | 97av视频在线观看 | 97成人精品 | 天天爽天天爽天天爽 | 国产一级视频在线免费观看 | 成人在线一区二区 | 日韩av免费大片 | 日韩精品91偷拍在线观看 | 国产精品美女毛片真酒店 | 在线免费看片 | 色婷婷视频 | 中文字幕在线第一页 | 亚洲四虎在线 | 国产婷婷久久 | 久久精品亚洲国产 | 干天天 | 久久久综合精品 | 国产黄色a| 日本不卡一区二区三区在线观看 | 日韩电影中文字幕在线观看 | 色婷婷亚洲 | 欧美aaa大片 | 五月天久久久久久 | 91精品欧美 | 精品国产一区二区三区久久 | 亚洲综合少妇 | 久草9视频 | av手机在线播放 | 天天综合日| 人人搞人人搞 | 日韩综合一区二区三区 | 久久久国产一区二区三区四区小说 | 免费看片色 | 精品国产资源 | 国产精品2019 | 国内久久精品 | 波多野结衣电影久久 | 国产精品白浆 | 免费成人短视频 | 午夜精品电影一区二区在线 | 婷婷av网 | 久久久国产在线视频 | 中文av字幕在线观看 | 成人国产精品电影 | 欧美日韩国产成人 | 综合色站 | 国产一区在线视频观看 | 国产精品美女在线 | 99热这里只有精品国产首页 | 成人三级av | 精品99久久 | 国产黄色理论片 | 中文字幕专区高清在线观看 | 深夜免费福利在线 | 久久黄网站 | 欧美日韩裸体免费视频 | 国产高清在线视频 | 成人免费在线观看av | 国产亚洲精品免费 | 欧美激情第八页 | 久久夜色网 | 青青久草在线视频 | 午夜黄色影院 | 中文字幕在线观看完整版 | 波多野结依在线观看 | 色婷婷导航 | 日韩在线电影一区 | 五月天网页 | 综合久久婷婷 | 最新日韩在线观看视频 | 伊人视频 | 欧美午夜激情网 | 激情综合一区 | 亚洲视频h | 天天干天天摸天天操 | 天堂在线免费视频 | 亚洲国产精品va在线 | 国产成人精品久久 | 天天看天天干天天操 | 国产成人一区二区啪在线观看 | 国产精品毛片久久久久久久久久99999999 | av在线超碰| 亚洲综合日韩在线 | 香蕉视频网站在线观看 | 91av免费看| 亚洲国产中文在线观看 | 久久久久久久免费观看 | 欧美日韩一区久久 | 九九视频在线观看视频6 | 日本韩国中文字幕 | 六月丁香六月婷婷 | 免费看的黄色网 | 亚洲成人av一区 | 日韩av成人免费看 | 狠狠色狠狠色 | 精品av在线播放 | 亚洲免费av电影 | 狠狠干2018 |