1.长度最小子数组(结合力扣209题)
解题思路
记录下两次红色框中的数据进行对比,则可找出答案
int n = nums.length;
if (n == 0) {
return 0;
}
int ans = Integer.MAX_VALUE;
for (int i = 0; i < n; i++) {
int sum = 0;
for (int j = i; j < n; j++) {
sum += nums[j];
if (sum >= s) {
ans = Math.min(ans, j - i + 1);
break;
}
}
}
return ans == Integer.MAX_VALUE ? 0 : ans;
}
2.定长子串中元音的最大数目(结合力扣1456题)
第二题解题思路如上
public int maxVowels(String s, int k) {
if(s==null || s=="" || s.length()<k)
return 0;
int maxSubLen=0;
int num=0;//记元音个数
Set set = new HashSet();
set.add('a');
set.add('e');
set.add('i');
set.add('o');
set.add('u');
for(int i=0;i<k;i++)
{
if(set.contains(s.charAt(i)))
num++;
}
maxSubLen=Math.max(maxSubLen,num);
for(int i=k;i<s.length();i++)
{
if(set.contains(s.charAt(i-k)))
num--;
if(set.contains(s.charAt(i)))
num++;
maxSubLen=Math.max(maxSubLen,num);
}
return maxSubLen==0?0:maxSubLen;
}
}