LeetCode—209. 长度最小的子数组
生活随笔
收集整理的這篇文章主要介紹了
LeetCode—209. 长度最小的子数组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
209. 長度最小的子數組
題目描述:給定一個含有 n 個正整數的數組和一個正整數 target 。
找出該數組中滿足其和 ≥ target 的長度最小的 連續子數組 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其長度。如果不存在符合條件的子數組,返回 0 。
考察重點:快慢指針——滑動窗口
方法概括:通過滑動窗口查找數組內滿足條件的最短子數組
func MinSubArrayLen(target int, nums []int) int {res := 0minLen := math.MaxInt32slow := 0 //slow ,quick 雙指針滑動窗口for quick := 0; quick < len(nums); quick++ {res += nums[quick] //quick每次向后一個,加入新元素for res >= target { //因為quick++導致窗口總和超出target,則通過slow++減少窗口總和if minLen > quick-slow+1 { //如果當前長度小于minLen,則替換minLen = quick - slow + 1}res -= nums[slow]slow++}}if minLen == math.MaxInt32 { //如果無法達到target,返回0return 0}return minLen }總結
以上是生活随笔為你收集整理的LeetCode—209. 长度最小的子数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信,QQ抢红包软件原理解析
- 下一篇: windows设备坐标和逻辑坐标的转换