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

雙指針和滑動窗口算法模板

開發(fā) 前端 算法
雙指針的算法原理,通過兩個指針在一個for循環(huán)下完成兩個for循環(huán)的工作。雙指針的算法模板比較簡單,突破口主要是需要找到題目中的單調(diào)性,從而加以利用。

[[428819]]

雙指針的算法原理,通過兩個指針在一個for循環(huán)下完成兩個for循環(huán)的工作。時間復雜度從優(yōu)化到了

雙指針的算法模板比較簡單,突破口主要是需要找到題目中的單調(diào)性,從而加以利用。

快慢指針

快慢指針一個鏈表操作技巧,它還有一個有趣的名字,龜兔賽跑。

  • 移除元素:

  1. class Solution { 
  2. public
  3.     int removeElement(vector<int>& nums, int val) { 
  4.         int slowIndex = 0; 
  5.         for (int fastIndex = 0; fastIndex < nums.size(); fastIndex++) { 
  6.             if (val != nums[fastIndex]) { 
  7.                 nums[slowIndex++] = nums[fastIndex]; 
  8.             } 
  9.         } 
  10.         return slowIndex; 
  11.     } 
  12. }; 
  • 環(huán)的入口位置:應用快慢指針,快指針走兩步,慢指針走一步。假使有環(huán),兩指針遲早相遇;假使無環(huán),快指針就會走到盡頭,退出循環(huán)。如果有環(huán),慢指針重新開始,此時快指針是交點,同速兩指針交點必是入口。
  1. class Solution { 
  2. public
  3.     ListNode *detectCycle(ListNode *head) { 
  4.         ListNode* slow = head; 
  5.         ListNode* fast = head; 
  6.         while (fast && fast->next){ 
  7.             fast = fast->next->next
  8.             slow = slow->next
  9.             if (fast == slow) break; 
  10.         } 
  11.          
  12.         if (fast && fast->next){ 
  13.             slow = head; 
  14.             while(slow!=fast){ 
  15.                 slow = slow->next
  16.                 fast = fast->next
  17.             } 
  18.             return slow; 
  19.         } 
  20.         return nullptr; 
  21.     } 
  22. }; 
  • 鏈表的中間結(jié)點:應用快慢指針,快指針走兩步,慢指針走一步。快指針走到盡頭時,慢指針剛好走了一半,返回即為中間結(jié)點。
  • 刪除鏈表的倒數(shù)第 N 個結(jié)點:快指針先走 n 步,然后快慢指針同時走,快指針走到頭時,慢指針就在倒數(shù)第 n 個位置。

反向指針

反向指針經(jīng)典題目是N sum 系列和二分變種題目。

N sum 系列的經(jīng)典題目是:三數(shù)之和

  1. def threeSum(nums): 
  2.     nums.sort() 
  3.     # [-4, -1, -1, 0, 1, 2] 
  4.     res_list = [] 
  5.     # 頭部循環(huán)查找 
  6.     for i in range(len(nums)): 
  7.      #  必須判斷 nums[i] > nums[i - 1]這個條件 
  8.         if i == 0 or nums[i] > nums[i - 1]: 
  9.             # 最左端 
  10.             l = i + 1 
  11.             # 最右端 
  12.             r = len(nums) - 1 
  13.             while l < r:  # 正在查找 
  14.                 three_sum = nums[i] + nums[l] + nums[r] 
  15.                 if three_sum == 0: 
  16.                     res_list.append([nums[i], nums[l], nums[r]]) 
  17.                     l += 1  # 右移一位 
  18.                     r -= 1  # 左移一位 
  19.                     while l < r and nums[l] == nums[l - 1]: 
  20.                         # 從左往右,相同數(shù)值直接跳過 
  21.                         l += 1 
  22.                     while r > l and nums[r] == nums[r + 1]: 
  23.                         # 從右往左,相同數(shù)值直接跳過 
  24.                         r -= 1 
  25.                 elif three_sum > 0: 
  26.                     # 大于零,右邊數(shù)值大,左移 
  27.                     r -= 1 
  28.                 else
  29.                     # 小于零,左邊數(shù)值小,右移 
  30.                     l += 1 
  31.     return res_list 

在四種二分變種中,根據(jù)王爭算法專欄中,寫死low = 0,high = len(list) - 1。循環(huán)條件low <= high。往左移動high = mid - 1,往右移動low = mid + 1

  1. def binary_search(nums, target): 
  2.  '''標準二分算法模板''' 
  3.     low = 0 
  4.     high = len(nums) - 1  # 注意1 low和high用于跟蹤在其中查找的列表部分 
  5.     while low <= high:  # 注意2 只要還沒有縮小到只有一個元素,就不停的檢查 
  6.         mid = (low + high) // 2 
  7.         if list[mid] == target: 
  8.             return mid 
  9.         elif list[mid] > target: 
  10.             high = mid - 1  # 注意3 猜的數(shù)字大了 
  11.         elif list[mid] < target: 
  12.             low = mid + 1   # 注意4 猜的數(shù)字小了 
  13.     return mid 
  14.  
  15.  
  16. def bsearch_low(nums,target): 
  17.     '''求第一個等于定值 ''' 
  18.     low = 0 
  19.     high = len(nums) - 1 
  20.     # 這里需要 <= 
  21.     while low <= high: 
  22.         # 這里需要注意: 就是使用((high - low) >> 1)需要雙擴號 
  23.         mid = low + ((high - low) >> 1) 
  24.         if nums[mid] < target: 
  25.             low = mid + 1 
  26.         elif nums[mid] > target: 
  27.             high = mid - 1 
  28.         else
  29.             if mid == 0 or nums[mid-1] != target: 
  30.                 return mid 
  31.             else
  32.                 high = mid -1 
  33.  
  34.     return -1 
  35.  
  36. def bsearch_high(nums,target): 
  37.     '''求最后一個等于定值的''' 
  38.     low = 0 
  39.     higt = len(nums) -1 
  40.     while low <= higt: 
  41.         mid = low + ((higt- low) >>1 ) 
  42.         if nums[mid] > target: 
  43.             higt = mid - 1 
  44.         elif nums[mid] < target: 
  45.             low = mid +1 
  46.         else
  47.             if mid == (len(nums) -1) or nums[mid] != nums[mid+1]: 
  48.                 return mid 
  49.             else
  50.                 low = mid +1 
  51.     return  -1 
  52.  
  53. ''
  54. 查找第一個大于等于給定值的元素 
  55. * 如序列:3,4,6,7,19 查找第一個大于5的元素,即為6,return 2 
  56. * 第一個大于給定值,則說明上一個小于給定值,依次判斷 
  57. ''
  58. def bsearch_low_not_less(nums,target): 
  59.     low = 0 
  60.     high = len(nums) -1 
  61.     while(low<=high): 
  62.         mid = low + ((high-low) >>1) 
  63.         if nums[mid] >= target: 
  64.             if mid == 0 or nums[mid - 1] < target: 
  65.                 return mid 
  66.             else
  67.                 # 往左移動 
  68.                 high = mid - 1 
  69.         else
  70.             # 往右移動 
  71.             low = mid +1 
  72.     return -1 
  73.  
  74. ''
  75. 查找第一個小于給定值的元素 
  76. * 如序列:3,4,6,7,19 查找第一個小于5的元素,即為4,返回1 
  77. * 第一個大于給定值,則說明上一個小于給定值,依次判斷 
  78. ''
  79. def bsearch_high_not_greater(nums,target): 
  80.     '''求最后一個小于等于值''' 
  81.     low = 0 
  82.     higt = len(nums) -1 
  83.     while low <= higt: 
  84.         mid = low + (( higt -low ) >> 1) 
  85.         if nums[mid] <= target: 
  86.             if (mid == len(nums) -1) or (nums[mid + 1] > target): 
  87.                 return mid 
  88.             else
  89.                 low = mid +1 
  90.         else
  91.             higt = mid -1 
  92.     return  -1 

滑動窗口

原文:https://mp.weixin.qq.com/s/ioKXTMZufDECBUwRRp3zaA

滑動窗口算法是雙指針技巧的最高境界,主要用于兩個字符串匹配的問題。

掌握了滑動窗口的解題模板可以輕松解決一系列字符串匹配的問題。

下面模板代碼來源labuladong,解決LeetCode 76 題,Minimum Window Substring,求最小覆蓋子串。

  1. /* 滑動窗口算法框架 */ 
  2. string minWindow(string s, string t) { 
  3.      // 兩個unordered_map ,一個need記錄模式串的字符數(shù)量,一個window記錄窗口的字符 
  4.     unordered_map<charint> need, window; 
  5.     // 初始化need 
  6.     for (char c : t) need[c]++; 
  7.  
  8.     int left = 0, right = 0; 
  9.     // 兩個unordered_map的符合條件數(shù)目 
  10.     int valid = 0; 
  11.     // 記錄最小覆蓋子串的起始索引及長度 
  12.     int start = 0, len = INT_MAX; 
  13.     while (right < s.size()) { 
  14.         // c 是將移入窗口的字符 
  15.         char c = s[right]; 
  16.         // 右移窗口 
  17.         right++; 
  18.         // 進行窗口內(nèi)數(shù)據(jù)的一系列更新 
  19.         if (need.count(c)) { 
  20.             window[c]++; 
  21.             if (window[c] == need[c]) 
  22.                 valid++; 
  23.         } 
  24.  
  25.         // 判斷左側(cè)窗口是否要收縮 
  26.         while (valid == need.size()) { 
  27.             // 在這里更新最小覆蓋子串 
  28.             if (right - left < len) { 
  29.                 start = left
  30.                 len = right - left
  31.             } 
  32.             // d 是將移出窗口的字符 
  33.             char d = s[left]; 
  34.             // 左移窗口 
  35.             left++; 
  36.             // 進行窗口內(nèi)數(shù)據(jù)的一系列更新 
  37.             if (need.count(d)) { 
  38.                 if (window[d] == need[d]) 
  39.                     valid--; 
  40.                 window[d]--; 
  41.             }                     
  42.         } 
  43.     } 
  44.     // 返回最小覆蓋子串 
  45.     return len == INT_MAX ? 
  46.         "" : s.substr(start, len); 

在python里unodered map可以用collections.defaultdict和collections.Counter實現(xiàn)

 

責任編輯:姜華 來源: Python之王
相關推薦

2023-11-15 07:40:40

2023-05-16 08:01:26

限流算法滑動窗口

2021-11-12 09:30:46

滑動窗口算法

2023-05-15 07:32:01

算法訓練滑動窗口

2025-10-09 01:15:00

2022-01-27 22:50:01

鏈表雙指針結(jié)構(gòu)

2022-03-18 14:33:22

限流算法微服務

2023-08-11 07:44:40

TCP滑動窗口數(shù)據(jù)

2021-01-04 10:39:27

滑動問題滑動窗口Python

2023-08-26 20:56:02

滑動窗口協(xié)議

2023-11-10 16:28:02

TCP窗口

2020-08-13 08:43:24

TCP固定窗口滑動窗口

2025-05-23 10:10:00

限流算法系統(tǒng)Go

2015-01-15 09:21:24

TCP窗口

2021-06-10 08:51:57

C++指針聲明指針相關概念

2011-07-15 01:20:58

C指針函數(shù)函數(shù)指針

2021-11-09 10:38:16

C++Const指針

2013-11-18 10:04:31

TCP 滑動窗口

2022-06-28 15:13:12

Vuediff 算法

2020-06-24 11:35:42

單機分布式流控
點贊
收藏

51CTO技術棧公眾號

中文字幕在线观看亚洲| 狠狠躁夜夜躁人人爽超碰91| 亚洲在线视频福利| 日韩av在线播| 欧美午夜精彩| 精品少妇一区二区三区| 国产精品无码av无码| 91在线中文| 久久女同性恋中文字幕| 成人写真视频福利网| 国产a∨精品一区二区三区仙踪林| 欧美美女视频| 亚洲国产精品久久久久| 免费看污污网站| av电影高清在线观看| 国产亚洲自拍一区| 国产偷久久久精品专区| 一二区在线观看| 午夜亚洲精品| 欧美激情图片区| 日韩av网站在线播放| 偷拍自拍一区| 欧美成人在线直播| 久久婷婷中文字幕| 成人综合网站| 色国产综合视频| 3d动漫一区二区三区| jizz性欧美| 国产精品久久精品日日| 国内不卡一区二区三区| 精品久久久免费视频| 久久爱www久久做| 国产成人精品久久| 草久视频在线观看| 一本色道久久精品| 毛片精品免费在线观看| 欧美日韩色视频| 精品国产a一区二区三区v免费| 亚洲成**性毛茸茸| 国产精品99精品无码视亚| 亚洲日日夜夜| 欧美视频一区二区在线观看| 亚洲爆乳无码专区| 亚洲深夜视频| 舔着乳尖日韩一区| 国产中文字幕乱人伦在线观看| 黄色网页在线免费看| 国产精品欧美一级免费| 日韩欧美视频一区二区三区四区| 日本天堂影院在线视频| 99久久精品免费精品国产| 成人欧美一区二区三区在线观看 | 黄色99视频| 天堂中文在线官网| 99久久er热在这里只有精品66| yellow视频在线观看一区二区| 国产白浆在线观看| 国产精品正在播放| 不卡视频一区二区三区| 国产色视频在线| 国产91精品欧美| 国产精品初高中精品久久| 亚洲精品久久久久久久久久久久久久| 国产自产2019最新不卡| 91久色国产| 日韩在线一区二区三区四区| 99久久国产综合色|国产精品| 鲁鲁视频www一区二区| 全色精品综合影院| 日本一区二区三区高清不卡 | 中文字幕在线免费看线人 | 国产91在线|亚洲| 国产免费一区| 蜜桃视频在线入口www| 国产视频一区二区三区在线观看| 亚洲v欧美v另类v综合v日韩v| 91xxx在线观看| 亚洲色图制服诱惑| 久久男人资源站| 亚洲欧美韩国| 欧美高清性hdvideosex| 国产精品嫩草69影院| 猫咪成人在线观看| 国产亚洲xxx| 国产精品久久久精品四季影院| 国产一区观看| 日本韩国在线不卡| 91在线精品入口| 成人综合在线观看| 日韩av一区二区三区在线观看| 免费大片在线观看www| 亚洲香蕉伊在人在线观| 国产男女无遮挡| 麻豆国产一区| 亚洲男人第一网站| www欧美com| 亚洲女优在线| 91网站在线看| 桃花色综合影院| 国产精品麻豆视频| 免费国产黄色网址| 色综合一区二区日本韩国亚洲| 精品国产凹凸成av人网站| 美女久久久久久久久久| 欧美在线亚洲| 国产成人亚洲综合91精品| 99久久免费国产精精品| 国产亚洲婷婷免费| 国产精品久久久久7777| 亚洲国产伊人| 精品亚洲一区二区| 国产十六处破外女视频| 日韩av在线发布| 国产精品国产精品国产专区蜜臀ah | mm视频在线视频| 欧美日韩精品高清| wwwwww日本| 99国产精品视频免费观看一公开| 国产在线精品一区免费香蕉| 九九热视频在线观看| 亚洲一卡二卡三卡四卡五卡| 午夜免费看视频| 欧美日日夜夜| 欧美激情亚洲精品| 精品人妻一区二区三区含羞草| 国产亚洲精品超碰| www.玖玖玖| 精品精品国产毛片在线看| 久热精品视频在线观看| 中文字幕第315页| 久久久一区二区三区捆绑**| 国产手机免费视频| 亚洲电影一区| 久久综合电影一区| 国产麻豆免费观看| 国产精品国产三级国产a| 日本一极黄色片| 免费观看不卡av| 91高清免费视频| 亚洲 欧美 激情 小说 另类| 亚洲一区二区综合| 国产ts在线观看| 亚洲视频观看| 精品久久一区二区三区蜜桃| 波多野结衣精品| 亚洲丁香久久久| 日本三级片在线观看| 成人一区二区视频| 久久国产精品视频在线观看| 高潮久久久久久久久久久久久久| 欧美国产欧美亚洲国产日韩mv天天看完整 | 黄色免费在线网站| 欧美挠脚心视频网站| 久久精品日韩无码| 国产一区二区三区在线观看免费视频| 一区二区三区四区不卡| 91成人短视频在线观看| 久久夜色精品国产欧美乱| 99在线精品视频免费观看软件| 亚洲欧美国产高清| 久久精品无码专区| 99re国产精品| 欧美系列一区| 久久爱.com| 欧美成年人视频网站| 亚洲国产www| 日韩欧美在线网址| 女人十八毛片嫩草av| 久草这里只有精品视频| 欧美 日韩 国产精品| 另类在线视频| 国产精品久久久久久av| 黄色在线视频网站| 亚洲爱爱爱爱爱| 天干夜夜爽爽日日日日| 一区在线播放视频| 亚洲黄色小说在线观看| 国产精品美女| 亚洲欧美在线网| a级日韩大片| 日本电影亚洲天堂| 成人免费视屏| 日韩电影中文字幕av| 中文字幕第31页| 亚洲资源中文字幕| 91网站免费入口| 国产制服丝袜一区| 亚欧无线一线二线三线区别| 欧美在线色图| 99在线视频播放| 日韩免费小视频| 欧美成人午夜视频| 国产综合在线观看| 日韩精品一区二区三区蜜臀| 69国产精品视频免费观看| 国产精品国产三级国产有无不卡| 伦理片一区二区| 青青国产91久久久久久| 国产精品入口芒果| 日韩中字在线| 久久riav二区三区| 久久九九精品视频| 国产精品久久av| bl视频在线免费观看| www.精品av.com| 天堂中文在线8| 日韩女优制服丝袜电影| 国产九色91回来了| 岛国av一区二区| 免费网站看av| 国产调教视频一区| 日本黄色片在线播放| 国产真实乱对白精彩久久| 久久久久久久久久久久久国产精品| 91精品国产成人观看| 日本一区二区在线视频| 国产精品色在线网站| 91日本在线观看| 成人午夜亚洲| 国产精品18久久久久久首页狼| 金瓶狂野欧美性猛交xxxx | 我要看黄色一级片| 国产亚洲成aⅴ人片在线观看| 国产精品91av| 国产在线播放一区| 蜜臀一区二区三区精品免费视频| 亚洲综合另类| 欧美人成在线观看| 激情文学一区| 97超碰在线人人| 亚洲第一黄网| www.日本在线视频| 欧美日韩一区二区高清| 9191国产视频| 一区二区日韩欧美| 国产精品无码乱伦| 爽成人777777婷婷| 亚洲视频电影| 久久亚洲国产| 久久免费看毛片| 久久资源中文字幕| 四虎免费在线观看视频| 欧美电影三区| 国产欧美自拍视频| 亚洲一区二区日韩| 日本a在线天堂| 亚洲图片在线| 欧美激情 国产精品| 综合久久精品| 激情成人开心网| 激情久久一区| jizzjizz国产精品喷水| 国产精品嫩草99av在线| 久久久久久久久久福利| 秋霞国产午夜精品免费视频| 久久综合伊人77777麻豆最新章节| 日韩在线一区二区三区| jizz欧美性11| 国产精品一区专区| 久草视频福利在线| 久久综合给合久久狠狠狠97色69| 精品人伦一区二区三电影| 欧美国产1区2区| 一级性生活免费视频| 亚洲精品成人精品456| 国产无遮挡裸体免费视频| 无吗不卡中文字幕| 无码人妻丰满熟妇精品| 欧美日韩在线免费视频| 99精品在线视频观看| 亚洲精品久久久久国产| 黄视频在线播放| www.久久久久| brazzers在线观看| 国产精品成人一区二区| 24小时成人在线视频| 国产嫩草一区二区三区在线观看 | 宅男一区二区三区| 欧美国产三区| 国产熟女高潮视频| 激情五月激情综合网| 亚洲一区二区三区四区av| 国产亚洲综合色| 午夜免费激情视频| 日韩欧美精品中文字幕| 国产一区二区网站| 亚洲精品国产免费| 黄色网址免费在线观看| 奇米一区二区三区四区久久| 亚洲欧美在线人成swag| 黑人巨大精品欧美一区二区小视频 | 欧美精品一区二区三区久久久 | 麻豆乱码国产一区二区三区| www.综合网.com| 国产精品久久久久久久一区探花 | 欧美日韩在线精品| 亚洲有吗中文字幕| 久久久久久久久久福利| 国产91精品一区二区麻豆网站 | 国产成人久久精品| 五月亚洲婷婷| 亚洲三区视频| 国产亚洲精品bv在线观看| 超碰91在线播放| 国产清纯在线一区二区www| 国产无码精品在线播放| 91精品国产高清一区二区三区 | 在线观看av免费观看| www久久精品| 国产亚洲精品久久久久久打不开| 91久久精品一区二区三区| 女人18毛片一区二区三区| 日韩中文在线视频| 日本免费久久| 国产日韩一区欧美| 真实国产乱子伦精品一区二区三区| 无码aⅴ精品一区二区三区浪潮 | 日韩精品一区在线| 天天综合视频在线观看| 欧美在线视频网| 精品女人视频| 日本aa在线观看| 国产一区二区三区蝌蚪| 青青草自拍偷拍| 欧美在线制服丝袜| 男人的天堂在线视频| 亚洲3p在线观看| 精品国产导航| 日日摸日日碰夜夜爽无码| 懂色av一区二区三区免费观看| chinese全程对白| 欧美另类久久久品| 亚洲视频tv| 国产欧美日韩最新| 色喇叭免费久久综合| 一本色道久久亚洲综合精品蜜桃 | 91看片在线播放| 精品国产a毛片| 国产网红在线观看| 成人av免费电影| 欧美午夜一区二区福利视频| 欧美污在线观看| 亚洲精品国产第一综合99久久| 6—12呦国产精品| 久久视频在线看| av成人在线网站| av动漫在线免费观看| 国产91色综合久久免费分享| 九九九免费视频| 精品99999| 无码小电影在线观看网站免费| 久久久久se| 久久久久国产精品一区三寸 | 一区二区三区日韩欧美精品| 国产普通话bbwbbwbbw| 久久国产精品久久精品| 日本一区二区三区播放| 屁屁影院ccyy国产第一页| 成人三级伦理片| 国产69精品久久久久久久久久| 精品亚洲国产成av人片传媒| 欧美专区福利免费| 亚洲精品中文综合第一页| 激情五月激情综合网| 久久精品视频国产| 亚洲精品一区二区在线| 99久久精品一区二区成人| 宅男一区二区三区| 成人一区二区在线观看| www.欧美色| 精品国产一区av| 国产精品白丝av嫩草影院| 欧美激情成人网| 亚洲三级在线免费观看| 日本高清视频免费看| 国产精品久久二区| 欧美激情视频一区二区三区在线播放 | 亚洲人成网站777色婷婷| 久久91视频| 131美女爱做视频| 国产精品理伦片| 亚洲精品97久久中文字幕无码| 青青草精品毛片| 中文字幕一区二区三区久久网站| 久久久久久久无码| 欧美三日本三级三级在线播放| 新版中文在线官网| 欧美日韩国产一二| 国产精品一区二区在线观看网站 | 欧美日韩免费一区二区三区| 91中文在线| 日韩资源av在线| 懂色av一区二区在线播放| 中文字幕在线天堂| 欧美激情va永久在线播放| 国产精品一区二区三区av麻| 丰满少妇中文字幕| 在线观看亚洲精品| 成人在线免费观看黄色| 中文字幕综合在线观看|