描述:
给定一个由 n 个整数组成的数组和一个正整数 s ,请找出该数组中满足其和 ≥ s 的最小长度子数组。如果无解,则返回 -1。
样例:
给定数组 [2,3,1,2,4,3]
和 s = 7
, 子数组 [4,3]
是该条件下的最小长度子数组。
思路:
遍历寻找,要比较每一次比较是否找到了结果 ,再更新result
public class Solution {
/**
* @param nums: an array of integers
* @param s: an integer
* @return: an integer representing the minimum size of subarray
* 要检验是否进行了操作
*/
public int minimumSize(int[] nums, int s) {
// write your code here
if(nums == null || nums.length == 0){
return -1;
}
int count = Integer.MAX_VALUE;
int value = 0;
for(int i = 0;i<nums.length;i++){
int sum = 0;
int num = 0;
boolean op = false;
for(int j = i;j<nums.length;j++){
sum += nums[j];
num++;
if(sum >= s){
op = true;
break;
}
}
count = op?Math.min(count , num):count;
value = Math.max(value , sum);
}
return value < s?-1:count;
}
}