209. 长度最小的子数组
这里的更新结果就题来定
java">class Solution {public int minSubArrayLen(int target, int[] nums) {int sum = 0;int len = 0;int f = 0;for(int left = 0, right = 0; right < nums.length;){//求和sum += nums[right];while(sum >= target){//lenint t = right - left + 1; if(f == 0 ){len = t;}if(t < len ){len = right - left +1;}f = 1;left++;// if(left >= nums.length){// break;// }sum -= nums[left-1];}//if(right < nums.length){right++;//}// if(left == nums.length){// break;// }}return len;}
}
我在处理第一次len得到长度时使用的flag,老师用的时最大值,思路可以借鉴
先暴力枚举分析所有情况,做这种题都要这样。根据枚举优化得到滑动窗户做法
3. 无重复字符的最长子串
java">class Solution {public int lengthOfLongestSubstring(String s) {Set<Character> set = new HashSet<Character>();int n = s.length();int len = 0;for(int left = 0, right = 0; right < n;right++){while(right > 0 && set.contains(s.charAt(right))){set.remove(s.charAt(left));left++;}set.add(s.charAt(right));len = Math.max(len, right -left +1);}return len;}
}
什么时候更新len有点难,多想一下过程的思路
这里用数组来当hash,空间复杂度为O(1),但如果new hash 就是O(N)