给定一个无序的正整数数组和一个目标正整数target,请你在数组中找出和为target的最短连续子数组,并返回其长度。如果不存在符合条件的子数组,返回0;用java语言
```java
import java.util.HashMap;
import java.util.Map;
public class Solution {
public int shortestSubarray(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
int sum = 0;
map.put(0, -1);
int minLength = Integer.MAX_VALUE;
int start = 0;
for (int i = 0; i < nums.length; i++) {
sum += nums[i];
if (map.containsKey(sum - target)) {
int length = i - map.get(sum - target);
if (length < minLength) {
minLength = length;
start = map.get(sum - target) + 1;
}
}
map.put(sum, i);
}
return minLength == Integer.MAX_VALUE ? 0 : minLength;
}
}
```
创作工场
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!