无重复字符的最长子串
给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串的长度。
示例 1:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
class Solution {
public int lengthOfLongestSubstring(String s) {
Set<Character> set = new HashSet();
int lenght = s.length();
int res = 0;
for(int left = 0,right = 0;right < lenght;right++){
char ch = s.charAt(right);
while(set.contains(ch)){
set.remove(s.charAt(left));
left ++;
}
set.add(ch);
res = Math.max(res,right - left + 1);
}
return res;
}
}
给定一个含有 n
个正整数的数组和一个正整数 target
。找出该数组中满足其总和大于等于 target
的长度最小的
子数组
[numsl, numsl+1, ..., numsr-1, numsr]
,并返回其长度。如果不存在符合条件的子数组,返回 0
。
示例 1:
输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3]是该条件下的长度最小的子数组。
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int min = Integer.MAX_VALUE;
int res = 0;
for(int right=0,left=0;right<nums.length;right++){
res += nums[right];
while(res>=target){
min = Math.min(min,right - left + 1);
res -= nums[left];
left++;
}
}
return min == Integer.MAX_VALUE ? 0 : min;
}
}