精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

買賣股票,我總結了這 3 點經驗

大數據 數據分析
今天我們來聊聊 Leetcode 的華爾街之狼(The Wolf of Wall Street)系列,也稱股票系列, 在 Leetcode 上有 6 題之多。本文會通過講解其中的幾道經典題目再次探究動態規劃的魅力,希望能幫助大家對 DP 有更深入的理解。

[[396151]]

本文轉載自微信公眾號「碼農田小齊」,作者66brother。轉載本文請聯系碼農田小齊公眾號。

前言

今天我們來聊聊 Leetcode 的華爾街之狼(The Wolf of Wall Street)系列,也稱股票系列, 在 Leetcode 上有 6 題之多。

本文會通過講解其中的幾道經典題目再次探究動態規劃的魅力,希望能幫助大家對 DP 有更深入的理解。

這類題目在面試中非常常見,也有很多的變種,比如我就被問過不止要返回 profit,還要返回在哪天交易。

不過萬變不離其宗,把握住買賣的原則,你就是贏家。

1. Best Time to Buy and Sell Stock

給你一組數組 prices=[7,1,5,3,6,4]。prices[i] 代表在第i天股票的價格。你可以進行買與賣的操作,但你得先買了才能賣。(也就是不能 short)你最多進行一次買與賣的操作,問你能夠賺到的最大收益是多少?從本題的數據例子來看,我們如果在 i=1 天買和在 i=4天賣,我們能夠賺到 p[4]-p[1]=5 的收益。這是我們能夠做到的最大收益,其它的操作都不能賺的比5多。

問題分析 :

首先如果我們在第 i 天進行買的操作,那么賣的操作一定得發生在第 i 天之后,也就是 prices[i+1 : n] 里

以 prices=[7,1,5,3,6,4] 作為例子,如果我們在 prices[0] 買,那么賣一定發生在 prices[1 : 5]。

同理,如果我們在 prices[1] 買,賣一定發生在 prices[2 : 5]。

我們可以把所有的 (買,賣) pair 生成出來然后找到收益性最高的那對即可。

方法1 :暴力枚舉

  1. public int maxProfit(int[] prices) { 
  2.         int maxProfit = 0; //我們可以不進行操作,所以初始是 0 而不是 INT_MIN 
  3.         for(int i = 0; i < prices.length; i++){ 
  4.             //在 i 天 進行購買 
  5.             for(int j = i + 1; j < prices.length; j++){ 
  6.                 //在 j 天進行出售 
  7.                 int profit = prices[j] - prices[i]; 
  8.                 maxProfit = Math.max(maxProfit, profit); 
  9.             } 
  10.         } 
  11.         return maxProfit; 
  12.     } 

代碼總結:

  • 我們枚舉所有的 (i, j) pair,i 代表買,j 代表賣,并且 i < j,但以上暴力代碼的時間復雜度是 O(n^2),我們可不可以做的更好呢?

時空復雜度:

  • 時間復雜度:O(N^2)
  • 空間復雜度:O(1)

方法2:

  • 如果我們在第 i 天進行買的操作,那么賣的操作一定還是得發生在 prices[i+1 : n] 這個定理是不變的。
  • 換句話說,對于每個買的操作,prices[i],我們只需要找到 prices[i+1 : n] 里最大的數即可。
  • 我們可以用一個dp array 去記錄,dp[i] 表示 max(prices[i : n]) 。
  • 如果我們在 i 這天進行買的操作,獲得的最大的收益就是 dp[i+1] - prices[i] (這里我們要注意outbound)
  1. public int maxProfit(int[] prices) { 
  2.         int maxProfit = 0; 
  3.         int n = prices.length; 
  4.         int dp[] = new int[n];  
  5.  
  6.         dp[n - 1] = prices[n - 1]; 
  7.         for (int i = n - 2; i >= 0; i--) { 
  8.             dp[i] = Math.max(prices[i], dp[i + 1]); 
  9.         } 
  10.          
  11.         for (int i = 0; i < n - 1; i++) { 
  12.             maxProfit = Math.max(maxProfit, dp[i + 1] - prices[i]); 
  13.         } 
  14.         return maxProfit; 
  15.     } 

時空復雜度:

  • 時間復雜度:O(N)
  • 空間復雜度:O(N)

方法3:

我們其實可以把空間壓縮到 O(1),比起使用一個dp array 去記錄,我們可以直接一邊走一邊記錄。

  1. public int maxProfit(int[] prices) { 
  2.      int n = prices.length; 
  3.      int maxSell = prices[n - 1]; 
  4.      int maxProfit = 0; 
  5.  
  6.      for (int i = n - 2; i >= 0; i--) { 
  7.          maxProfit = Math.max(maxProfit, maxSell - prices[i]); 
  8.          maxSell = Math.max(maxSell, prices[i]); 
  9.      } 
  10.      return maxProfit; 
  11.  } 

時空復雜度:

  • 時間復雜度:O(N)
  • 空間復雜度:O(1)

2. Best Time to Buy and Sell Stock III

與第一題類似,給你一組數組 prices=[3,3,5,0,0,3,1,4]。

prices[i] 代表在第 i 天股票的價格,可以進行買賣操作,但得先買了才能賣。

這一次,你最多進行2次買與賣的操作,問你能夠賺到的最大收益是多少?

比如這個例子中,我們在第四天買第六天賣,和在第七天買第八天賣,我們可以得到 (3-0)+(4-1)=6,這是我們能得到的最大收益。

問題分析 :

這道題升級了一點難度,可以進行兩次的交易,但是只要打好了第一題的基礎,這題也并不會太難的。

我們已經通過了第一題學會了如何計算最多進行一次買賣操作的最大利潤,我們將通過已經計算好的一次交易最大利潤去計算兩次的是多少。

假設我們第一次 賣 發生在 i,那么我們第一次交易得發生在 prices[0 : i], 而我們第二次交易得發生在 prices[i+1 : n]。

  • 對于第一次交易,我們可以像第一題的 方法 3 一樣,我們枚舉每一次賣,我們只需要再找到 prices[i+1 : n] 的一次最大利潤操作即可。
  • 對于 prices[i+1 : n] 這一段,我們可以枚舉買,如果買發生在 prices[i],那么賣得發生在 prices[i+1 : n]。

方法1:

  1. public int maxProfit(int[] A) { 
  2.        int n = A.length; 
  3.        int maxProfit = 0; 
  4.  
  5.    //dp[i] 代表 prices[i:n] 能得到的最大一次交易利潤,也就是我們的第二次操作。 
  6.        int dp[] = new int[n]; 
  7.        int maxSell = A[n-1]; 
  8.  
  9.        for (int i = n - 2; i >= 0; i--) { 
  10.        //maxSell-A[i] 代表如果我們在i這天進行購買的話的最大利潤 
  11.            dp[i] = Math.max(dp[i+1], maxSell - A[i]); 
  12.            maxSell = Math.max(maxSell, A[i]); 
  13.            maxProfit = Math.max(maxProfit, dp[i]); 
  14.        } 
  15.  
  16.        int minBuy = A[0]; 
  17.        for (int i = 1; i < A.length - 1; i++) { 
  18.        //假設我們第一次賣發生在i,買得發生在prices[0:i-1] 
  19.        //第二次操作發生在prices[i+1 : n],dp[i+1]表示prices[i+1 : n]這段區間進行一次操作的最大值 
  20.            maxProfit = Math.max(maxProfit, dp[i + 1] + (A[i] - minBuy)); 
  21.            minBuy = Math.min(minBuy, A[i]); 
  22.        } 
  23.  
  24.        return maxProfit; 
  25.    } 

代碼總結:

  • 我們枚舉第一次的賣發生在 i,那么第一次操作發生在prices[0 : i],而第二次操作發生在 prices[i+1 : n]。
  • 我們可以提前對 prices[i+1 : n] 進行提前處理。
  • dp[i] 代表 prices[i : n] 最大利潤的一次交易,我們可以像第一題的題解3一樣去枚舉買
  • 再枚舉第一次交易的賣,如果它發生在 i,我們能得到的最大利潤就是prices[i] - min(prices[0 : i-1]) + dp[i+1]

空間復雜度和時間復雜度:

  • 時間復雜度:O(N)
  • 空間復雜度:O(N)

3. Best Time to Buy and Sell Stock with Transaction Fee && Best Time to Buy and Sell Stock II

題意:

同樣還是給你一組數組代表每一天的股價,這次我們可以進行多次買賣,但是每一次買賣你需要多付一個fee。例如,prices = [1,3,2,8,4,9], fee = 2

我們可以在第1天買第4天賣和第5天買第6天賣,總收益是(8-1-2) + (9-4-2) = 8,這是我們能得到的最大收益。

這里我們兩題一起講,因為他們是一樣的,Best Time to Buy and Sell Stock II 其實就是fee=0 的情況,如果我們能做出Best Time to Buy and Sell Stock with Transaction Fee,Best Time to Buy and Sell Stock II 就迎刃而解了。

問題分析 :

與之前的問題一樣,我們可以試著枚舉買或者賣。

但是因為這次不只是只有一次操作這么簡單,如果我們在 j 天進行購買和 i 天進行賣 (j

我們試著像第一題的方法1一樣先從暴力入手,去試著枚舉 (買,賣) pair。

如果我們在i天進行賣和j天進行買,他的單次交易 (singleTransaction) 能得到的利益是 prices[i]-prices[j]-fee。

但我們別忘了,我們prices[0 : j-1] 還可以進行其它的交易。

所以我們可以用一個 dp 去記錄,dp[i] 表示 prices[0:i] 能得到的最大收益。

所以如果我們在 i天賣和在j 天買,那么我們能得到的最大收益就是 prices[i]-prices[j]-fee+dp[j-1]。

現在我們剩下的問題就是如何去計算dp[i],如果我們在i 天進行賣,j 進行買,那么如果我們枚舉所有 j 的 可能性的話,dp[i]=max(prices[i] - prices[j]-fee + dp[j-1])。

但是我們別忘了一件事,我們在i 這天也可以不進行任何的操作,所以還要跟 dp[i-1] 進行比較。

綜上,dp[i]=max(dp[i-1], max(prices[i] - prices[j]-fee + dp[j-1]))

方法1:暴力解

  1. public int maxProfit(int[] prices, int fee) { 
  2.   int n = prices.length; 
  3.   int dp[] = new int[n];//dp[i]表示 [0:i]的最大收益 
  4.  
  5.   for (int i = 1; i < n; i++) {//枚舉i,i是賣的天數 
  6.     dp[i] = dp[i - 1]; 
  7.     for (int j = i - 1; j >= 0; j--) {//j 是買的天數,j<i 
  8.       int singleTransaction = Math.max(0, prices[i] - prices[j] - fee); 
  9.       //注意outbound 
  10.       if (j - 1 >= 0) { 
  11.         dp[i] = Math.max(dp[i], singleTransaction + dp[j - 1]); 
  12.       } else { 
  13.         dp[i] = Math.max(dp[i], singleTransaction); 
  14.       } 
  15.     } 
  16.   } 
  17.   return dp[n - 1]; 

代碼總結:

  • 暴力的dp,我們還會通過仔細觀察 dp 的關系轉移去進行深一步的優化

空間復雜度和時間復雜度:

  • 時間復雜度:O(N^2)
  • 空間復雜度:O(N)

方法2:優化DP

我們可以從 dp 的關系轉移中進行優化:

從方法1我們可以看出 dp[i]=max(dp[i-1], max(prices[i] - prices[j]-fee + dp[j-1])),從這轉移式中我們可以發現 i 是一個不變量,而 j 是變量。

首先,我們設dp[i]=dp[i-1]。

我們再仔細的觀察一下這個式子 prices[i] - prices[j]-fee + dp[j-1],當我們枚舉 i 的時候,我們會發現prices[i] - fee 是個常數!

我們如果把式子重新整理一下,那它就是 (prices[i] - fee) - (prices[j] - dp[j-1])。

我們要是想整個式子的值越大,變量部分prices[j] - dp[j-1] 就得越小。

如果我們在 i 進行賣,dp[i] = (prices[i] - fee) - min(prices[j] - dp[j-1]),我們可以用一個min 去記錄 prices[j] - dp[j-1],一邊遍歷一邊update。

沒錯,跟第一題的操作是完全一樣的。

  1. public int maxProfit(int[] A, int fee) { 
  2.   int n = A.length; 
  3.   int dp[] = new int[n]; 
  4.   int min = A[0]; 
  5.  
  6.   for (int i = 1; i < A.length; i++) { 
  7.     int cur = A[i] - fee; 
  8.     dp[i] = dp[i - 1]; 
  9.     dp[i] = Math.max(dp[i], cur - min); 
  10.     min = Math.min(min, A[i] - dp[i - 1]);  
  11.   } 
  12.   return dp[n - 1]; 

代碼總結:

  • DP 其實就是一種關系(式子)的轉化,當我們求出他的基本關系的時候,我們可以看看能不能通過它的關系進行優化

空間復雜度和時間復雜度:

  • 時間復雜度:O(N)
  • 空間復雜度:O(N)

4. Best Time to Buy and Sell Stock with Cooldown

題意:

給你一個數組prices = [1,2,3,0,2],你可以進行多次交易,但每完成一次交易得有一個cooldown,不能連續做交易

按照以上的數據,如果我們按這樣的操作[buy, sell, cooldown, buy, sell] 我們能夠得到利益 (2 - 1) + (2 - 0) =3,這是我們能夠得到的最大利益

問題分析 :

如果你會了第三題的解法,你會發現這題與上一題其實是異曲同工

因為有多次交易的關系,我們可以像上一題那樣,使dp[i] 表示 prices[0 : i] 的最大收益。如果我們在 i 這天進行賣 和 j 這天進行買,我們能得到的收益就是 prices[i]-prices[j] + dp[j-2]

剩下的問題就是define dp[i]。我們首先dp[i]=dp[i-1],因為在i這天我們可以不進行任何操作。然后我們要找的就是 max(prices[i] - prices[j] +dp[j-2])

和上一題一樣,當我們在i 這天時,prices[i] 是個常數。我們只需要找到最大的 (-prices[j]+dp[j-2]) 即可,我們可以像上題一樣一邊計算一邊記錄

代碼:

  1. public int maxProfit(int[] A) { 
  2.   if (A.length == 0) return 0; 
  3.   int dp[] = new int[A.length]; 
  4.  
  5.   //A[i]-A[j]+dp[j-2] 
  6.    
  7.   int max = -A[0]; 
  8.   for (int i = 1; i < A.length; i++) { 
  9.     dp[i] = Math.max(dp[i - 1], A[i] + max); 
  10.     if (i - 2 >= 0) { 
  11.       max = Math.max(max, dp[i - 2] - A[i]); 
  12.     } else { 
  13.       max = Math.max(max, -A[i]); 
  14.     } 
  15.   } 
  16.   return dp[A.length - 1]; 

代碼總結:

  • 與上一題是異曲同工。我們首先把dp 的關系式找出來,然后根據這關系式再進行進一步的優化

空間復雜度和時間復雜度:

  • 時間復雜度:O(N)
  • 空間復雜度:O(N)

總結

今天給大家總結了5題的 股票系列 題目,大家可以從看到我們是如何一步一步分析問題然后優化解題方法的。

我們先用枚舉的方式把問題暴力解出來,然后觀察看哪些地方是可以進行優化的。

三四題我們還學習了如何對DP進行優化。

DP 就是一種關系的轉換,在這轉換過程中有時會很復雜,但有時又會有規律。

 

責任編輯:武曉燕 來源: 碼農田小齊
相關推薦

2020-02-07 11:50:24

代碼開發工具

2022-04-01 10:05:36

FigmaFluent圖標

2018-10-17 14:18:34

2022-03-30 15:53:18

標簽頁用戶設計

2021-08-04 11:05:19

B端C端設計

2022-06-02 08:28:25

Docker代碼運維

2022-03-01 15:23:02

設計師創新互聯網

2022-03-09 09:23:18

Windows 11UI視覺風格

2021-10-13 09:49:14

高并發系統設計

2020-06-09 10:55:16

Python編程代碼

2020-12-10 16:20:30

Vue前端架構

2022-04-20 10:39:08

轉換用戶消費

2017-11-06 10:35:02

SaasCAC云計算

2020-11-27 14:47:54

可視化設計數據

2020-09-03 11:14:14

產品設計設計師用戶

2011-04-28 14:56:00

2022-07-01 10:56:25

移動互聯網B 端產品設計

2020-04-28 14:50:30

短視頻運營實戰

2023-08-28 12:09:53

2023-06-21 08:24:46

點贊
收藏

51CTO技術棧公眾號

国内毛片久久| 成人午夜视频一区二区播放| 精品日韩免费| 7777精品伊人久久久大香线蕉最新版| www.激情网| 欧美偷拍视频| 国产在线看一区| 97超碰国产精品女人人人爽| 免费一级suv好看的国产网站 | 国产精品美女主播| 激情视频在线播放| 日韩成人精品一区| 亚洲国产精品久久精品怡红院| 成人3d动漫一区二区三区| 国产精品扒开做爽爽爽的视频| 波多野结衣中文一区| 国产伦精品一区二区三区精品视频| 九九视频在线观看| 日韩一区二区在线免费| 日韩大陆毛片av| 日韩a一级欧美一级| 在线精品亚洲欧美日韩国产| 亚洲欧美韩国综合色| 欧美视频观看一区| 亚洲av无码一区二区三区dv| 久久久久国产一区二区| 久久久久久久国产| 日韩国产第一页| 精品国产一区探花在线观看| 精品乱人伦小说| 亚洲妇熟xx妇色黄蜜桃| 欧美人与性动交xxⅹxx| 五月激情综合网| 91网站在线观看免费| 午夜视频成人| 欧美国产国产综合| 欧美在线播放一区| 嫩草影院一区二区| 成人性视频免费网站| 成人天堂噜噜噜| 一区二区视频免费| 日韩电影免费在线观看网站| 欧美专区在线观看| 99热国产在线观看| 国产欧美一级| 国产91成人在在线播放| 久久久久久久99| 亚洲国产网站| 欧美激情精品久久久久久黑人 | 91国内在线| 亚洲日本护士毛茸茸| 国产久卡久卡久卡久卡视频精品| 国产91色在线|| 中文字幕一区在线播放| 国产一区二区三区的电影 | 午夜一区二区三视频在线观看| 青青国产在线| 久久久噜噜噜久噜久久综合| 久久久久久亚洲精品不卡4k岛国| 欧美视频xxx| av高清不卡在线| 激情伦成人综合小说| 天堂国产一区二区三区| 91免费版在线| 欧美一区二区高清在线观看| 黄色av免费在线看| 亚洲国产激情av| 在线观看成人av| 麻豆av在线导航| 一区二区在线观看免费| 国产一区 在线播放| 2001个疯子在线观看| 亚洲h精品动漫在线观看| 欧美 日韩 激情| 欧美日韩123区| 欧美日韩另类一区| 日本中文字幕在线不卡| 大奶在线精品| 亚洲精品自在久久| 欧美a级片免费看| 欧美阿v一级看视频| 高清欧美性猛交xxxx| 国产精品视频123| 美女视频网站黄色亚洲| 91丝袜脚交足在线播放| 亚洲欧美日韩动漫| 国产精品免费免费| 国产精品免费看久久久无码| 美女扒开腿让男人桶爽久久软| 在线精品视频一区二区| 国产欧美精品一二三| 老司机在线精品视频| 亚洲人成网站在线播| 久久久精品视频免费观看| 国产日韩一区| 91精品综合久久久久久五月天| 天天干视频在线观看| 中文字幕av一区二区三区| 国产精品视频一二三四区| 欧美舌奴丨vk视频| 日韩写真欧美这视频| 久久久久久久久久久国产精品| 999久久久国产精品| 久久久影视精品| 影音先锋黄色网址| caoporen国产精品视频| 手机看片福利永久国产日韩| 青草在线视频| 欧美高清精品3d| 成人精品在线观看视频| 亚洲国产一区二区在线观看| 日本精品在线视频| 亚洲AV午夜精品| 国产精品高清亚洲| 青青青在线播放| 成人av综合网| 久久精品国产欧美亚洲人人爽| 国产www在线| 国产传媒久久文化传媒| 亚洲不卡中文字幕| 2018av在线| 日韩视频中午一区| 亚洲波多野结衣| 青青草国产成人av片免费| 久草一区二区| 波多野结衣精品| 日韩精品中文字幕在线不卡尤物| 国产在视频线精品视频| 久久精品日韩欧美| 精品免费国产| av人人综合网| 精品人在线二区三区| 精品无码久久久久成人漫画| 日本v片在线高清不卡在线观看| 精品人伦一区二区三区| 日本高清成人vr专区| 884aa四虎影成人精品一区| 中文字幕免费视频| 免费一区视频| 精品一区久久久久久| 超碰在线97国产| 精品国产乱码久久久久久久久 | 一区二区亚洲精品| 97人人香蕉| 国内精品久久久久国产| 欧美日韩大陆在线| 精品人体无码一区二区三区| 日韩精品一二区| 日本不卡一区| 91精品影视| 亚洲视屏在线播放| 中文字幕欧美色图| 国产精品人成在线观看免费 | 涩涩涩久久久成人精品| 中文字幕欧美日韩| 一区二区久久精品66国产精品 | 国产精品99久久久久久久vr| 大桥未久一区二区三区| 日韩在线亚洲| 97国产成人精品视频| 婷婷在线免费视频| 精品日韩美女的视频高清 | 亚洲人成精品久久久久| 黄色一级片免费播放| 国产精品v亚洲精品v日韩精品| 成人一区二区三区四区| 黄色在线免费观看网站| 亚洲人成网站777色婷婷| 337p粉嫩色噜噜噜大肥臀| 色天天色综合| 亚洲男女一区二区三区| 一二三av在线| 精品二区久久| 日韩中文字幕一区| 91麻豆精品一二三区在线| 欧美精品在线免费播放| 无码国产精品一区二区免费16| 色av综合在线| 欧美三级黄色大片| 波多野结衣91| 性欧美极品xxxx欧美一区二区| 婷婷亚洲图片| 国产精品一区而去| 桃花岛成人影院| 久久精品视频网站| 天天干视频在线| 欧美日韩一区国产| 国产在线一二区| 国产亚洲欧美日韩在线一区| 伊人成人免费视频| 免费中文字幕日韩欧美| 手机成人av在线| 亚洲ab电影| 成人a在线视频| 欧美男男tv网站在线播放| 久久久极品av| 欧美色视频免费| 日韩一区二区三区免费看| wwwxxx亚洲| 亚洲激情五月婷婷| 亚洲色图第四色| av一区二区不卡| 天天综合成人网| 久久精品官网| 青青青青草视频| 国产精品成人av| 欧美日韩国产精品一区二区| 日韩一区二区三区在线看| 国产成人涩涩涩视频在线观看 | 午夜影视日本亚洲欧洲精品| 亚洲欧美精品久久| wwwwww.欧美系列| 337p日本欧洲亚洲大胆张筱雨| 日韩黄色片在线观看| 国产视频九色蝌蚪| 欧美黄在线观看| 在线一区日本视频| 精品国产1区| 久久国产一区二区| 国产成人一二片| 亚洲精品欧美日韩专区| 91精品店在线| 国产精品91视频| 天堂网在线最新版www中文网| 欧美大片在线看| 超碰在线caoporen| 日日骚av一区| av午夜在线| 国产亚洲欧美日韩一区二区| 日韩私人影院| 亚洲激情 国产| a天堂视频在线| 69成人精品免费视频| 亚洲一区 中文字幕| 91高清视频在线| 日本中文字幕在线观看视频| 狠狠色香婷婷久久亚洲精品| www..com国产| 婷婷中文字幕一区三区| 国产一国产二国产三| 亚洲午夜视频在线观看| 精品少妇久久久久久888优播| 亚洲欧美日韩中文播放| 538精品在线观看| 一区二区三区在线观看动漫| 成人在线观看小视频| 一区二区在线电影| 久久精品国产亚洲av无码娇色| 亚洲一区二区三区小说| 国产亚洲欧美久久久久| 午夜亚洲福利老司机| 日本三级中文字幕| 欧美视频免费在线| 在线免费观看国产精品| 在线欧美小视频| 亚洲一区中文字幕在线| 欧美伦理视频网站| 91禁在线观看| 欧美一级片在线看| 亚洲精品字幕在线| 亚洲精品成人网| 国产69久久| 色偷偷91综合久久噜噜| 午夜dj在线观看高清视频完整版| 久久99久国产精品黄毛片入口| 国模雨婷捆绑高清在线| 456亚洲影院| av在线日韩| 91在线看www| 精品国内亚洲2022精品成人| 久久精品国产一区二区三区日韩| 国内精品久久久久久久影视简单| 中文字幕中文字幕在线中心一区| 国产精品草草| 少妇性饥渴无码a区免费| 免费av成人在线| 成人啪啪18免费游戏链接| 久久在线观看免费| 成年人免费视频播放| 亚洲一二三区不卡| 日韩乱码一区二区三区| 日韩一级高清毛片| 免费播放片a高清在线观看| 久久激情视频免费观看| 92久久精品| 国产精品爽爽爽爽爽爽在线观看| 国产一区二区久久久久| 久久久婷婷一区二区三区不卡| 青青草原综合久久大伊人精品| www.18av.com| 日韩成人av影视| 娇妻高潮浓精白浆xxⅹ| 中文字幕av资源一区| 国产无套粉嫩白浆内谢| 欧美精品第1页| 偷拍25位美女撒尿视频在线观看| 色妞一区二区三区| 亚洲天堂免费电影| 99电影网电视剧在线观看| 在线观看欧美理论a影院| 亚洲色婷婷久久精品av蜜桃| 狂野欧美性猛交xxxx巴西| 热这里只有精品| 亚洲网色网站| 无码人妻丰满熟妇区五十路百度| 国产原创一区二区| 蜜桃久久精品成人无码av| 亚洲亚洲精品在线观看| 国产一区二区三区在线观看| 日韩精品免费综合视频在线播放| 免费a级在线播放| 国产精品91久久久| 人人香蕉久久| 超碰人人爱人人| 久久99精品一区二区三区| 我和岳m愉情xxxⅹ视频| 亚洲国产美女搞黄色| 国产精品久久久久久久久久久久久久久久 | 亚洲综合av网| 国产精品探花视频| 中文字幕亚洲二区| 向日葵视频成人app网址| 国产一区视频观看| 欧美三级乱码| 一级 黄 色 片一| 国产精品免费视频网站| 四虎影院在线免费播放| 精品视频在线播放色网色视频| 欧洲精品二区| 99久久伊人精品影院| 亚洲欧美在线专区| aaa一级黄色片| 国产精品成人免费| 一区二区三区www污污污网站| 亚洲性生活视频| 国产超碰精品| 欧美激情国产日韩| 狂野欧美一区| 亚洲第一综合网| 在线欧美日韩国产| www.久久热.com| 国产精品成久久久久三级| 欧美激情在线免费| 99视频在线免费| 国产欧美精品一区aⅴ影院 | 日韩精品最新网址| 黄色在线观看视频网站| 91亚色免费| 亚洲国产高清视频| 岛国精品资源网站| 欧美日韩亚洲一区二区三区| 四虎成人免费在线| 欧美最猛性xxxxx亚洲精品| 外国成人在线视频| 日本中文字幕片| 日本一区二区成人在线| 一级做a爱片久久毛片| 超碰97人人做人人爱少妇| 国产一区精品二区| 野外做受又硬又粗又大视频√| 成人免费视频视频| 国产小视频在线免费观看| 亚洲视频自拍偷拍| av在线亚洲一区| 国产精品www在线观看| 91在线免费视频观看| 国产女优在线播放| 久久久91精品| 精品三级av在线导航| 蜜臀av午夜一区二区三区| 中文字幕的久久| 国产黄色一区二区| 26uuu日韩精品一区二区| 欧美综合另类| 国产成人精品综合久久久久99| 午夜不卡av免费| 福利成人在线观看| 91在线观看网站| 丝袜国产日韩另类美女| 中文字幕五月天| 日韩av中文字幕在线播放| 久久久久久一区二区三区四区别墅| 久久免费一级片| 99久久国产综合精品色伊| 中文字幕在线观看欧美| 欧美精品videosex牲欧美| 精品久久一区| 日本50路肥熟bbw| 欧美图区在线视频| a级片在线免费| 亚洲综合第一| 91首页免费视频| 99久久久国产精品无码免费| 2019中文字幕在线免费观看| 久久久久久美女精品 | 在线视频观看91| 欧美色视频日本版| 色屁屁www国产馆在线观看| 亚洲毛片aa| 久久综合九色欧美综合狠狠|