大家好,又到每日刷题的时候了,我是新手,就用自己的方法解题
给定一个含有 n
个正整数的数组和一个正整数 target
。
找出该数组中满足其和 ≥ target
的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr]
,并返回其长度。如果不存在符合条件的子数组,返回 0
。
示例 1:
输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3]
是该条件下的长度最小的子数组。
示例 2:
输入:target = 4, nums = [1,4,4] 输出:1
示例 3:
输入:target = 11, nums = [1,1,1,1,1,1,1,1] 输出:0
解题思路:采用循环解题,依次遍历连续元素个数为1,2等等的子数组,再判断是否符合条件
代码:
//给定一个数组nums和变量target
int[] nums = {1,1,1,1,1,1,1};
int target = 11;
int a = nums.length;//把数组长度赋值给a
int s = 0;//用来判断是否有符合条件的子数组,没有则返回 0
int d = 0;//d用来将子数组的连续元素相加,第2层循环一次就归0,再赋值
for (int z = 0; z < a; z++) {//用来增加条件,每次循环要连续增加的元素加1
for (int x = 0; x < a - z; x++) {//遍历数组元素
for (int c = 0; c <= z; c++)//每次遍历数组元素 就将连续的元素相加
d += nums[c+x];
if (d >= target) {//进行比较子数组和target的大小
s++;
System.out.println(z+1);//z加1是因为z初始值为0
System.exit(1);//若存在符合条件的值,输出后就停止运行,此结果就是结果
}
d=0;//进行归0
}
}
if (s == 0)//用来判断是否有符合条件的子数组,没有则返回 0
System.out.println(s);
运行结果:
0
进程已结束,退出代码为 0
请大家多关注 点赞