leetcode 209. Minimum Size Subarray Sum | 209. 长度最小的子数组(Java)
生活随笔
收集整理的這篇文章主要介紹了
leetcode 209. Minimum Size Subarray Sum | 209. 长度最小的子数组(Java)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
https://leetcode.com/problems/minimum-size-subarray-sum/
題解
雙指針解法,左指針和右指針在合適的時候向右走,并維護一個sum
版本1
思路與版本2相同,循環寫的不夠優雅
class Solution {public static int minSubArrayLen(int target, int[] nums) {int l = 0;int r = 0;int sum = nums[0];int minLen = Integer.MAX_VALUE;while (r < nums.length - 1) {while (sum < target && r < nums.length - 1) {sum += nums[++r];}minLen = Math.min(r - l + 1, minLen);while (sum >= target && l <= r) {sum -= nums[l++];if (sum >= target) minLen = Math.min(r - l + 1, minLen);}}if (l == 0 && sum < target) return 0;else return minLen;} }版本2
Java,和版本1思路相同,實現上比較優雅,效率無差別。改寫自官方題解的 C++ 版本。
class Solution {public static int minSubArrayLen(int target, int[] nums) {int left = 0;int sum = 0;int minLen = Integer.MAX_VALUE;for (int i = 0; i < nums.length; i++) {sum += nums[i];while (sum >= target) {minLen = Math.min(i - left + 1, minLen);sum -= nums[left++];}}return minLen != Integer.MAX_VALUE ? minLen : 0;} }總結
以上是生活随笔為你收集整理的leetcode 209. Minimum Size Subarray Sum | 209. 长度最小的子数组(Java)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 208. Implem
- 下一篇: leetcode 210. Course