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

幾個有趣的算法,你知道嗎?

開發 前端 算法
公民身份號碼是特征組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。

[[428794]]

本文轉載自微信公眾號「微醫大前端技術」,作者孫領芝  。轉載本文請聯系微醫大前端技術公眾號。

根據身份證號碼計算出性別、年齡

一、身份證號碼國家標準

1、范圍

《公民身份號碼》(GB11643-1999)該標準規定了公民身份號碼的編碼對象、號碼的結構和表現形式,使每個編碼對象獲得一個唯一的、不變的法定號碼。

2、號碼的結構

公民身份號碼是特征組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。

2.1、地址碼

表示編碼對象常住戶口所在縣(市、旗、區)的行政區劃代碼

2.2、出生日期碼

表示編碼對象出生的年、月、日

2.3、順序碼

表示在同一地址碼所標識的區域范圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。

2.4、校驗碼

根據前面十七位數字碼,按照 ISO 7064:1983.MOD 11-2 中的校驗碼計算方法計算確定

(1)十七位數字本體碼加權求和公式:S = Sum(Ai * Wi)

身份證號 1 1 0 1 0 5 1 9 4 9 1 2 3 1 0 0 2
加權因子 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
Ai * Wi 7 9 0 5 0 20

S = 7 + 9 + 0 + 5 + 0 + 20 + 2 + 9 + 24 + 27 + 7 + 18 + 30 + 5 + 0 + 0 + 4 = 167

(2)計算模:Y = mod(S, 11) Y = 167 % 11 => 2

(3)通過模得到對應的校驗碼

0 1 2 3 4 5 6 7 8 9 10
校驗碼 1 0 X 9 8 7 6 5 4 3 2

模為 2 時,校驗碼為 X。

二、代碼實現

1、身份證號正確性校驗

  1. const WEIGHT = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] 
  2. const MO = [1,0,'X',9,8,7,6,5,4,3,2] 
  3.  
  4. function isRightId(id){ 
  5.   const arr = id.split(''
  6.   const checkNumber = arr.pop() // 去除校驗碼,將 pop 的返回值賦值給 checkNumber 
  7.   let sum = 0 
  8.   arr.forEach((ele, index) => { 
  9.    sum += ele * WEIGHT[index
  10.   }) 
  11.   const m = sum % 11 
  12.   const result = MO[m] 
  13.   return result+'' === checkNumber 
  14.  
  15. console.log(isRightId('11010519491231002X')) // true 
  16. console.log(isRightId('110105194912310029')) // false 

2、由身份證號計算年齡

  1. function getAge(id){ 
  2.   // 1、先判斷身份證號的正確性 
  3.   // 2、判斷是否在世 
  4.   const year = id.substr(6,4) 
  5.   const month = id.substr(10,2) 
  6.   const day = id.substr(12,2) 
  7.    
  8.   const timeBrth = new Date(`${year}/${month}/${day}`).getTime() 
  9.   const timeNow = new Date().getTime() 
  10.   const longTime = timeNow - timeBrth 
  11.   const days = longTime / (1*24*60*60*1000) 
  12.    
  13.   let result = '' 
  14.   if(days<31){ 
  15.   result = parseInt(days) + '天' 
  16.   }else if(days<365){ 
  17.    result = `${parseInt(days/30)}月${parseInt(days%30)}天` 
  18.   }else
  19.    result = `${parseInt(days/365)}歲${parseInt(days%365/30)}月${parseInt(days%365%30)}天` 
  20.   } 
  21.   return result  
  22. console.log(getAge('11010519491231002X')) // 71 歲 8 月 16 天 
  23. console.log(getAge('11010520210820002X')) // 6 天 
  24. console.log(getAge('11010520210720002X')) // 1 月 7 天 

3、由身份證號判斷性別

  1. function getSex(id){ 
  2.   // 1、先判斷身份證號的正確性 
  3.   const sex = id.substr(16,1) 
  4.   return sex%2? '男''女' 
  5. console.log(getSex('11010519491231002X')) // 女 
  6. console.log(getSex('11010520210820001X')) // 男 

三、其他

1、變性手術后,身份證號碼是否更改?

跨性別人士身份證性別變更后,依戶口所在派出所公示為準,進行身份證號碼變更。

2、計算年齡前應先確認是否在世。

四、參考資料

《公民身份號碼》(GB11643-1999)

動態規劃

1、定義

動態規劃(Dynamic Programming,DP)是運籌學的一個分支,是求解決策過程最優化的過程。

可以簡單的理解為是對傳統遞歸的一種優化。在 DP 的實踐中很重要的就是遞推關系和邊界條件。

2、簡單:爬樓梯

題目

假設你正在爬樓梯。需要 n 階你才能到達樓頂。

每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢?

注意 給定 n 是一個正整數。

  1. 輸入:2 
  2. 輸出:2 
  3. 解釋: 有兩種方法可以爬到樓頂。 
  4. 1.  1 階 + 1 階 
  5. 2.  2 階 

示例 2:

  1. 輸入:3 
  2. 輸出:3 
  3. 解釋: 有三種方法可以爬到樓頂。 
  4. 1.  1 階 + 1 階 + 1 階 
  5. 2.  1 階 + 2 階 
  6. 3.  2 階 + 1 階 

代碼:

  1. // 把數據緩存在一個數組中 
  2. var climbStairs = function(n) { 
  3.     let dp = [] 
  4.     dp[0]=1; 
  5.     dp[1]=1; 
  6.     for(let i=2;i<=n;i++){ 
  7.       dp[i]=dp[i-1]+dp[i-2]; 
  8.     } 
  9.     return dp[n]; 
  10. }; 
  11.  
  12. // 使用遞歸 
  13. var climbStairs = function(n) { 
  14.     if(n===1) return 1 
  15.     if(n===2) return 2 
  16.     return climbStairs(n-1) + climbStairs(n-2) 
  17. }; 

思路:

f(x)=f(_x_?1)+f(x_?2) 爬到第 x _級臺階的方案數是爬到第 x - 1 級臺階的方案數和爬到第 x - 2 級臺階的方案數的和。

LeetCode 運行結果:

3、中等:最長回文子串

題目

給你一個字符串 s,找到 s 中最長的回文子串。

示例 1:

  1. 輸入:s = "babad" 
  2. 輸出:"bab" 
  3. 解釋:"aba" 同樣是符合題意的答案。 

示例 2:

  1. 輸入:s = "cbbd" 
  2. 輸出:"bb" 

思路:

當 s[i+1 : j-1] 是回文串,并且 s 的第 i 和 j 個字母相同時,s[i:j] 才會是回文串。

即:P(i,j)=P(i+1,j?1) 且 (Si == Sj)。

邊界條件:子串的長度為 1 或 2。對于長度為 1 的子串,它顯然是個回文串;對于長度為 2 的子串,只要它的兩個字母相同,它就是一個回文串。

  • P(i, i) = true
  • P(i, i+1) = (Si == Si+1)

代碼:

  1. function longestPalindrome (s) { 
  2.      // 先判斷字符串長度,如果為 1 則直接返回 
  3.      let len = s.length 
  4.      if (len < 2) return s 
  5.       
  6.      // 初始化變量 
  7.      let maxLen = 1 
  8.      let begin = 0 
  9.       
  10.      // dp[i][j] 表示 s[i..j] 是否是回文串 
  11.      let dp = [] 
  12.      // 初始化:所有長度為 1 的子串都是回文串 
  13.      for (let i = 0; i < len; i++) { 
  14.        dp[i] = [] 
  15.        dp[i][i] = true 
  16.      } 
  17.       
  18.      // 將字符串切割為數組 
  19.      let charArray = s.split(''
  20.       
  21.      // 遞推開始 
  22.      for (let L = 2; L <= len; L++) { // 枚舉子串長度 
  23.        // 枚舉左邊界,左邊界的上限設置可以寬松一些 
  24.        for (let i = 0; i < len; i++) { 
  25.          // 由 L 和 i 可以確定右邊界,即 j - i + 1 = L 得 
  26.          let j = L + i - 1; 
  27.          // 如果右邊界越界,退出當前循環 
  28.          if (j >= len) { 
  29.            break; 
  30.          } 
  31.          // 判斷是否為回文 
  32.          if (charArray[i] !== charArray[j]) { 
  33.            dp[i][j] = false 
  34.          } else { 
  35.            // 對于一個子串而言,如果它是回文串,并且長度大于 2,那么將它首尾的兩個字母去除之后,它仍然是個回文串。 
  36.            let flag = j - i < 3 
  37.            dp[i][j] = flag ? true : dp[i + 1][j - 1] 
  38.          } 
  39.          // 當 dp[i][L] == true 成立,就表示子串 s[i..L] 是回文,記錄回文長度和起始位置 
  40.          if (dp[i][j] && j - i + 1 > maxLen) { 
  41.            maxLen = j - i + 1; 
  42.            begin = i; 
  43.          } 
  44.        } 
  45.      } 
  46.      return s.substring(beginbegin + maxLen); 
  47.    } 
  48.    console.log(longestPalindrome('babad'), 'babad') // bab babad 
  49.    console.log(longestPalindrome('cbbd'), 'cbbd') // bb cbbd 

LeetCode 運行結果:

4、困難:接雨水

題目:

給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。

示例 1:

  1. 輸入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 
  2. 輸出:6 
  3. 解釋:上面是由數組 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度圖,在這種情況下,可以接 6 個單位的雨水(藍色部分表示雨水)。  

示例 2:

  1. 輸入:height = [4,2,0,3,2,5] 
  2. 輸出:9 

代碼:

  1. function trap(height) { 
  2.     // 不滿足條件,直接返回 
  3.     let len=height.length; 
  4.     if(len<=2) return 0; 
  5.  
  6.     let maxLeft = []; // 第 i 根柱子左邊最高柱子的高度 
  7.     let maxRight = []; // 第 i 根柱子右邊最高柱子的高度 
  8.  
  9.     maxLeft[0] = height[0]; 
  10.     for(let i=1; i<len; i++){ 
  11.             maxLeft[i] = Math.max(height[i], maxLeft[i-1]) // 動態轉移 
  12.     } 
  13.  
  14.     maxRight[len-1] = height[len-1]; 
  15.     for(let j=len-2; j>=0; j--){ 
  16.             maxRight[j] = Math.max(height[j], maxRight[j+1]) // 動態轉移 
  17.     } 
  18.  
  19.     let sum=0; 
  20.     for(let i=0;i<len;i++) sum+=Math.min(maxLeft[i],maxRight[i])-height[i]; 
  21.  
  22.     return sum

思路:

每一列柱子接的雨水是該柱子兩側最高柱子的最小值減去該柱子高度。

LeetCode 運行結果:

附件:雙指針法

代碼:

  1. function trap(height) { 
  2.    let ans=0; 
  3.    for(let i=1; i<height.length-1; i++){ 
  4.    let l_hight = height[i]; 
  5.    let r_hight = height[i]; 
  6.  
  7.                            // 找到 i 列右側最高柱子高度 
  8.    for(let r=i; r<height.length; r++){ 
  9.     if(height[r]>r_hight) r_hight=height[r]; 
  10.    } 
  11.  
  12.    // 找到 i 列柱子左側最高柱子高度 
  13.    for(let l=i; l>=0; l--){ 
  14.     if(height[l]>l_hight) l_hight=height[l]; 
  15.    } 
  16.  
  17.    ans+=Math.min(l_hight,r_hight)-height[i]; 
  18.    } 
  19.    return ans; 

LeetCode 運行結果:

5、參考資料

來源:力扣(LeetCode)

https://leetcode-cn.com/problems/climbing-stairs/

https://leetcode-cn.com/problems/longest-palindromic-substring/

https://leetcode-cn.com/problems/trapping-rain-water/

貪心算法

1、定義

在對問題求解時,總是做出在當前看來是最好的選擇。

2、分餅干

假設你是一位很棒的家長,想要給你的孩子們一些小餅干。但是,每個孩子最多只能給一塊餅干。對每個孩子 i,都有一個胃口值 g[i],這是能讓孩子們滿足胃口的餅干的最小尺寸;并且每塊餅干 j,都有一個尺寸 s[j] 。如果 s[j] >= g[i],我們可以將這個餅干 j 分配給孩子 i ,這個孩子會得到滿足。你的目標是盡可能滿足越多數量的孩子,并輸出這個最大數值。

示例 1: 輸入: g = [1,2,3], s = [1,1] 輸出: 1

示例 2: 輸入: g = [1,2], s = [1,2,3] 輸出: 2

  1. function findContentChildren1(children, cookies){ 
  2.   children = children.sort((a, b) => a - b) 
  3.   cookies = cookies.sort((a, b) => a - b) 
  4.   let childrenLength = children.length 
  5.   let cookiesLength = cookies.length 
  6.   let count = 0 
  7.   for(let i = 0, j = 0; i < childrenLength && j < cookiesLength; i++, j++){ 
  8.     while(j < cookiesLength && children[i] > cookies[j]){ 
  9.       j++ 
  10.     } 
  11.     if(j < cookiesLength){ 
  12.       count++ 
  13.     } 
  14.   } 
  15.   return count 
  16.  
  17.  
  18. console.log(findContentChildren1([1,2,3], [1,1])) // 1 
  19. console.log(findContentChildren1([1,2], [1,2,3])) // 2 
  20. console.log(findContentChildren1([1,2,3], [1,1,3,4])) // 3 

核心思想:

  • 將孩子的胃口、餅干的大小都按照從小到大排序。
  • for 循環遍歷,比較孩子的胃口 children[i]和餅干的大小 cookies[j]之間的關系,當當前餅干不能滿足孩子的胃口時,選擇下一個餅干進行比較。
  • 如果滿足孩子的胃口,且 j 在范圍內,則 count 加 1。

代碼解讀:

  • 定義函數 findContentChildren,接受 2 個參數,分別為 children:孩子的胃口,cookies 餅干的大小。
  • 將 children 和 cookies 按照從小到大排序。
  • 定義能夠滿足孩子胃口的個數 count,并最終將 count 返回。
  • 循環遍歷,當 children[i] > cookies[j] 即當前餅干不能滿足孩子時,j++選擇下一塊餅干進行比較。
  • 如果 children[i] <= cookies[j] 即當前餅干能滿足孩子,且 j 在范圍內,則 count 加 1。
  • 進入下一次循環(即嘗試滿足下一個孩子)。

3、買股票

給定一個整數數組 prices,其中第 i 個元素代表了第 i 天的股票價格 ;整數 fee 代表了交易股票的手續費用。你可以無限次地完成交易,但是你每筆交易都需要付手續費。如果你已經購買了一個股票,在賣出它之前你就不能再繼續購買股票了。返回獲得利潤的最大值。注意:這里的一筆交易指買入持有并賣出股票的整個過程,每筆交易你只需要為支付一次手續費。

示例 1:輸入:prices = [1, 3, 2, 8, 4, 9], fee = 2, 輸出:8

解釋:

能夠達到的最大利潤:

在此處買入 prices[0] = 1 在此處賣出 prices[3] = 8 在此處買入 prices[4] = 4 在此處賣出 prices[5] = 9 總利潤: ((8 - 1) - 2) + ((9 - 4) - 2) = 8

示例 2:輸入:prices = [1,3,7,5,10,3], fee = 3 輸出:6

  1. function maxProfit(list, fee){ 
  2.   const length = list.length 
  3.   let buy = list[0] + fee // 假定:買入時機為第 1 天 
  4.   let profit = 0 
  5.   for(let i = 1; i < length; i++){ 
  6.     if(list[i]+fee < buy){ // 如果股票價格降低,則調整買入時機 
  7.       buy = list[i]+fee 
  8.     }else if(list[i] > buy){ // 如果有利潤,則賣出 
  9.       profit += list[i] - buy // 計算利潤 
  10.       buy = list[i] // 調整買入時機 
  11.     } 
  12.   } 
  13.   return profit 
  14.  
  15. console.log(maxProfit([1, 3, 2, 8, 4, 9], 2)) // 8 
  16. console.log(maxProfit([1,3,7,5,10,3], 3)) // 6 

代碼解讀:

  • 定義函數 maxProfit,接受 2 個參數,list 為股票價格趨勢,fee 為手續費
  • 定義 profit,并在最后將 profit 返回
  • 假定:買入時機為第 1 天(即:list[0])
  • 如果股票價格降低,則調整買入時機為后一天
  • 如果有利潤,則賣出,并計算利潤,再次調整買入時機(即循環步驟 3、4、5)

核心思想:

  • 假定:買入時機為第 1 天
  • 如果股票價格降低,則調整買入時機為后一天
  • 如果有利潤,則賣出,并且計算利潤
  • 再次 - 假定:買入時機(循環步驟 1-3)

4、情侶牽手

N 對情侶坐在連續排列的 2N 個座位上,想要牽到對方的手。計算最少交換座位的次數,以便每對情侶可以并肩坐在一起。一次交換可選擇任意兩人,讓他們站起來交換座位。人和座位用 0 到 2N-1 的整數表示,情侶們按順序編號,第一對是 (0, 1),第二對是 (2, 3),以此類推,最后一對是 (2N-2, 2N-1)。

這些情侶的初始座位 row[i] 是由最初始坐在第 i 個座位上的人決定的。

示例 1:

輸入: row = [0, 2, 1, 3] 輸出: 1 解釋: 我們只需要交換 row[1]和 row[2]的位置即可。

示例 2:

輸入: row = [3, 2, 0, 1] 輸出: 0 解釋: 無需交換座位,所有的情侶都已經可以手牽手了。

  1. /** 
  2.  * @param {number[]} row 
  3.  * @return {number} 
  4.  */ 
  5. var minSwapsCouples = function(row) { 
  6.     let hashMap = {}; // {人: 位置} 
  7.     for(let i=0; i<row.length; i++){ 
  8.       hashMap[row[i]] = i 
  9.     } 
  10.  
  11.     let ans = 0; // 交換次數 
  12.  
  13.     for(let i=0; i<row.length; i+=2){ // 按照一對遍歷 
  14.         let lover=row[i]^1; // row[i]的情侶 
  15.         if(hashMap[lover] !== i+1){ // 如果不相鄰,就交換 
  16.             ans++; 
  17.             hashMap[row[i+1]] = hashMap[lover]; // row[i+1]使用了 lover 的下標 
  18.              // 交換位置 
  19.             [row[i+1], row[hashMap[lover]]] = [row[hashMap[lover]], row[i+1]] 
  20.             hashMap[lover]=i+1; // lover 的下標改為 i+1 使其相鄰 
  21.         } 
  22.     } 
  23.     return ans; 
  24. }; 

核心思想:

  1. 遍歷數組,檢查情侶是否相鄰,如果不是,就調整一個的位置使其相鄰。
  2. 我們盡量只挪動情侶中的一位,另一位不動,這樣才能保證挪動次數最少。
  3. 這樣交換,不會影響其他的情侶。

代碼解讀:

  1. 定義函數 minSwapsCouples,接收一個參數 row 即情侶座位關系的數組。
  2. 得到{人: 位置}的對象。
  3. 定義交換次數 ans,并在最后將其返回。
  4. 遍歷左側情侶,檢查右側是否為 TA 的情侶,如果不是,則找到 TA 的情侶并調換座位。

5、參考資料

本文題目來源:力扣(LeetCode)

 

鏈接:https://leetcode-cn.com

孫領芝: 一個愛好碳水的山東大妞。

 

責任編輯:武曉燕 來源: 微醫大前端技術
相關推薦

2024-09-29 09:16:30

2023-12-12 08:41:01

2020-12-24 18:44:34

RSA加密算法

2019-10-29 15:09:52

Python貪心算法代碼

2022-09-29 15:32:58

云計算計算模式

2024-09-18 07:00:00

消息隊列中間件消息隊列

2022-03-10 08:25:27

JavaScrip變量作用域

2019-12-12 09:23:29

Hello World操作系統函數庫

2024-04-07 00:00:00

ESlint命令變量

2024-05-28 09:12:10

2023-04-26 10:21:04

2023-12-20 08:23:53

NIO組件非阻塞

2024-04-30 09:02:48

2024-12-04 08:40:19

2024-10-15 11:37:06

2021-10-28 16:19:37

物聯網人工智能IoT

2014-05-30 10:23:15

樂跑手環智能手環運動手環

2020-10-08 18:58:46

條件變量開發線程

2024-06-03 14:27:08

ThisAPIThat

2024-06-20 08:06:30

點贊
收藏

51CTO技術棧公眾號

国产熟女精品视频| 国精品无码人妻一区二区三区| 免费av在线| 国内精品伊人久久久久av一坑| 久久成人一区二区| 欧美成人三级伦在线观看| 性感美女一区二区在线观看| 亚洲免费在线视频| 精品免费国产| 国产乱码久久久久| 亚洲在线成人| 免费91在线视频| 男人操女人动态图| jizz性欧美23| 欧美美女喷水视频| 日韩精品一区二区三区色欲av| 黄黄的网站在线观看| 91丨porny丨首页| 91手机在线播放| 亚洲天堂男人网| 久久久国产亚洲精品| 欧美第一页在线| 亚洲一二三精品| 韩国女主播一区二区三区| 成人在线黄色电影| 国产精品少妇自拍| 久久青青草综合| 亚洲a视频在线观看| 免费亚洲电影在线| 欧美专区在线观看| 久久夜色精品亚洲| 欧美日韩精品| 日韩在线免费视频| 免费网站在线高清观看| 国偷自产av一区二区三区| 7777精品久久久大香线蕉| 激情五月亚洲色图| 韩国美女久久| 欧美三级xxx| 免费观看美女裸体网站| 国产桃色电影在线播放| 自拍偷拍国产精品| 一本一本久久a久久精品综合妖精| 黄色毛片在线看| 久久综合九色综合欧美就去吻| 国产成人精品一区二区三区福利| 国产又粗又猛又爽又黄视频| 久久99国产精品成人| 国产精品久久久久久久久| 国产精品视频一区在线观看| 中文精品视频| 97视频免费看| 五月婷婷开心网| 国产精品亚洲欧美在线播放| 国产视频久久久久久| 97人妻精品一区二区三区视频| 久久午夜av| 日本成熟性欧美| 中文字幕亚洲乱码熟女1区2区| 夜夜嗨一区二区三区| 57pao成人永久免费视频| 日本韩国欧美中文字幕| 乱人伦精品视频在线观看| 热久久免费视频精品| 波多野结衣家庭主妇| 三级亚洲高清视频| 国产欧美在线视频| 国产欧美久久久精品免费| 国产精品亚洲一区二区三区妖精| 成人黄色av网站在线| 九九热在线精品视频| 青娱乐在线视频免费观看| 一区二区视频欧美| 欧美一级片免费在线| 国产情侣免费视频| 国产麻豆视频一区| 国产亚洲一区二区三区在线播放| 少妇激情av一区二区| 2023国产精品| 亚洲永久一区二区三区在线| 自拍亚洲图区| 婷婷综合在线观看| 91小视频网站| 日韩视频一二区| 亚洲精品福利资源站| 我想看黄色大片| 中文在线日韩| 日韩免费观看网站| 国产乱色精品成人免费视频| 99re66热这里只有精品3直播| 日韩三级电影网站| 欧美hdxxxx| 91成人在线免费观看| 亚洲国产综合av| 思热99re视热频这里只精品| 日韩一区二区三区在线播放| 久久精品国产亚洲AV无码男同| 水野朝阳av一区二区三区| 91在线精品观看| 国产永久免费高清在线观看| 亚洲影视资源网| 天天操天天爱天天爽| 国产欧美自拍一区| 久久综合久久八八| 丰满人妻一区二区三区四区| 国产成人aaa| 亚洲欧美日韩精品在线| 国产亚洲成av人片在线观看| 69堂成人精品免费视频| 中日韩精品一区二区三区| 欧美激情成人在线| 国产精品永久免费观看| 西西人体44www大胆无码| 亚洲人成在线观看一区二区| 国产成人一区二区三区别| 国产91精品在线| 亚洲精品资源美女情侣酒店| 国产女人被狂躁到高潮小说| 久久蜜桃资源一区二区老牛| 国产厕所精品在线观看| free性欧美hd另类精品| 欧洲一区在线观看| 亚洲熟妇无码av| 国产精品第十页| 96精品久久久久中文字幕| 国产二区视频在线观看| 精品久久久久久久久久ntr影视| 欧美精品色视频| 日韩欧美伦理| 国产精品视频白浆免费视频| 日本中文字幕一区二区有码在线| 亚洲国产aⅴ天堂久久| 男插女视频网站| 91精品一区二区三区综合| 国产精品久久久久免费a∨| 亚洲 欧美 自拍偷拍| 香港成人在线视频| 亚洲自拍偷拍精品| 亚洲人人精品| 国产自产在线视频一区| 久久久123| 精品剧情在线观看| 黄色小视频在线免费看| 国产成人啪免费观看软件| 成人毛片100部免费看| 国产精品亚洲四区在线观看 | 超碰影院在线观看| 日韩人体视频| 日韩美女免费观看| 久久伊伊香蕉| 欧美亚洲国产bt| 超薄肉色丝袜一二三| 捆绑调教美女网站视频一区| 亚洲精品成人a8198a| 九九久久国产| 久久久成人av| 国产 日韩 欧美 精品| 亚洲综合在线免费观看| 国产精品成人无码专区| 亚洲永久在线| 亚洲不卡中文字幕| 日本h片久久| www国产精品视频| 精品人妻一区二区三区日产乱码| 亚洲一卡二卡三卡四卡| 日韩 中文字幕| 日韩精品一二三| 亚洲午夜精品久久久中文影院av| 中文字幕成人| 久久久中精品2020中文| 欧美日本网站| 欧美日韩极品在线观看一区| 国产免费无码一区二区视频| 白白色亚洲国产精品| 久久久噜噜噜www成人网| 日本久久综合| 99久久自偷自偷国产精品不卡| 国产自产自拍视频在线观看| 国产亚洲激情视频在线| 国产精品视频一区二区三区,| 亚洲综合免费观看高清完整版在线 | 草视频在线观看| 91蜜桃在线免费视频| 中文字幕在线综合| 亚洲性人人天天夜夜摸| 日韩福利影院| 成人在线超碰| 国产精品看片资源| 欧美24videosex性欧美| 亚洲精品视频免费在线观看| 国产又粗又长又黄| 欧美日韩午夜剧场| 中文字幕人妻一区二| 久久久久久久久久久久久女国产乱| 一级黄色在线播放| 亚洲欧美日本国产专区一区| 超碰97免费观看| 天堂日韩电影| 99在线视频首页| 青青热久免费精品视频在线18| 欧美精品在线观看91| 国产高清在线观看| 亚洲电影第1页| 国产精品乱码久久久| 欧美色播在线播放| 五月天丁香激情| 国产精品青草综合久久久久99| 精品1卡二卡三卡四卡老狼| 麻豆精品在线播放| 国产日韩一区二区在线| 欧美午夜视频| 黄色高清视频网站| 日韩88av| 另类视频在线观看+1080p| 伊人www22综合色| 国产精品一区二区三区免费视频| 老色鬼在线视频| 久久手机精品视频| 超碰97在线免费观看| 日韩hd视频在线观看| 精品人妻一区二区三区三区四区 | 欧美一级视频一区二区| 久草在线资源站资源站| 久久精品中文字幕免费mv| 福利视频在线导航| 亚洲欧美中文日韩在线v日本| 亚洲女人18毛片水真多| 555夜色666亚洲国产免| 亚洲一级特黄毛片| 欧美性大战久久| 91在线视频免费播放| 天天操天天综合网| 日本午夜小视频| 亚洲v日本v欧美v久久精品| 欧美毛片在线观看| 亚洲欧美日韩精品久久久久| 亚洲av成人无码久久精品| 国产色产综合产在线视频| 亚洲av片不卡无码久久| 99精品视频在线观看| 特级西西人体4444xxxx| 99视频有精品| 少妇精品一区二区| 久久久久久久精| 免费看黄色的视频| 国产性天天综合网| 精品国产成人亚洲午夜福利| 久久精子c满五个校花| 老牛影视av老牛影视av| 久久精品免费在线观看| 亚洲色图日韩精品| 亚洲天堂av一区| 精品99在线观看| 午夜欧美视频在线观看 | 欧美日韩一区二区不卡| 中文字幕一区二区三区人妻四季| 欧美日韩国产一级| 国产精品无码一区二区桃花视频| 91精品午夜视频| 亚洲精品国产av| 日韩av中文字幕在线免费观看| 青春草在线观看| 中文字幕亚洲专区| av在线免费网址| 97色伦亚洲国产| 亚洲精品555| 91国产在线播放| 欧美男人操女人视频| 日韩av电影在线观看| 91久久国产| 久久成人福利视频| 久久字幕精品一区| 亚洲高清视频免费| 成人动漫一区二区在线| 中文字幕第4页| 亚洲免费观看高清完整版在线观看熊| 久草中文在线视频| 色综合久久久网| 国产毛片毛片毛片毛片| 精品美女一区二区| 91九色在线porn| 久久男人资源视频| 久久天堂av| 国产精品久久久久av福利动漫| 羞羞答答一区二区| 国产精品美女在线播放| 亚洲精品专区| 亚洲色图偷拍视频| 91视视频在线直接观看在线看网页在线看| 日韩一级av毛片| 亚洲在线中文字幕| 中文无码av一区二区三区| 欧美成人性福生活免费看| 黄色影院在线播放| 性欧美xxxx视频在线观看| 日韩福利影视| 久久99久久精品国产| 91超碰成人| 91最新在线观看| 波多野结衣精品在线| 最新av电影网站| 色94色欧美sute亚洲线路二| www.xxx国产| 日韩中文av在线| 亚洲国产欧美日本视频| 97在线中文字幕| 99精品视频在线| 久久婷婷国产精品| jiyouzz国产精品久久| 顶臀精品视频www| 在线观看91精品国产入口| 天堂av在线资源| 久久久久久国产免费| 精品91福利视频| 一区二区视频国产| 玖玖精品视频| 内射中出日韩无国产剧情| 一区二区日韩av| 国产视频一区二区三区四区五区| 亚洲性线免费观看视频成熟| 女人让男人操自己视频在线观看 | 国产欧美日韩影院| 国产69精品久久久久久久| 国产成人综合视频| 99久久婷婷国产综合| 在线播放一区二区三区| 一本一道波多野毛片中文在线| 青青草99啪国产免费| 全国精品免费看| 91猫先生在线| 91麻豆精品在线观看| 日产精品久久久久| 亚洲国产欧美精品| 成人ssswww在线播放| 国产美女99p| 日韩午夜激情| 亚洲国产第一区| 精品色蜜蜜精品视频在线观看| 黄色av网站免费在线观看| 欧美极度另类性三渗透| 2020最新国产精品| 日韩精品视频在线观看视频| 国产91精品露脸国语对白| 国产一级片免费| 精品国产sm最大网站| 麻豆蜜桃在线| 精品亚洲欧美日韩| 久久国产精品久久久久久电车 | 成人免费一级视频| 久久久久久久色| 青青一区二区| 青青在线视频免费| 国产精品污网站| 国产又粗又黄又爽| 久久99热这里只有精品国产| 51亚洲精品| 夫妻免费无码v看片| 久久久久国产一区二区三区四区| 综合网在线观看| 日韩中文字幕视频| 日韩精品一区二区三区中文字幕 | 欧美成人福利视频| 国产一二在线播放| 天堂一区二区三区| 国产一区二区女| 日韩免费在线视频观看| 亚洲女人天堂视频| 人人精品久久| 国产毛片久久久久久国产毛片| 99精品视频一区二区三区| 中日韩在线观看视频| 欧美裸身视频免费观看| 天堂99x99es久久精品免费| www欧美激情| 亚洲国产日韩综合久久精品| 免费在线性爱视频| 国产日韩中文字幕在线| 1024成人| 奇米网一区二区| 精品不卡在线视频| 素人啪啪色综合| 97在线国产视频| 中文成人av在线| 免费成人在线看| 国产精品日日摸夜夜添夜夜av| 欧美三级免费| 国产美女免费网站| 欧美成人国产一区二区| 国产成人精品一区二三区在线观看| 国产av不卡一区二区| 99精品热视频| 国产伦精品一区二区三区四区| 91精品国产91久久久久久| 欧美韩日一区| 精品少妇一区二区三区免费观| 欧美一二三区在线观看| japanese23hdxxxx日韩| 欧美黄网在线观看| 国产精品国产三级国产普通话99| 五月婷婷深深爱|