class Solution {
public int longestSubarray (int[] nums, int limit) {
if (nums == null
|| nums.length == 0) {
return 0;
}
int curr_max = nums[0];
int curr_min = nums[0];
Queue<Integer> sub_nums = new LinkedList<>();
for (int num : nums) {
if (Math.abs(num - curr_max) <= limit
&& Math.abs(num - curr_min) <= limit
&& Math.abs(curr_max - curr_min) <= limit) {
curr_max = Math.max(num, curr_max);
curr_min = Math.min(num, curr_min);
sub_nums.offer(num);
} else {
sub_nums.offer(num);
sub_nums.poll();
curr_max = Collection.max(sub_nums);
curr_min = Collection.min(sub_nums);
// 以前可以创造出来的最好的结果
}
}
return sub_nums.size();// 以前可以达到的最好的结果
} // 你不用找出来那个满足条件的数组是什么
}
class Solution {
public int lengthOfLongestSubstring(String s) {
LinkedList<Character> queue = new LinkedList<>();
for (char c : s.toCharArray()) {
if ((!queue.contains(c)) && (duplicate(queue))) {
queue.addLast(c);
} else {
queue.addLast(c);
queue.removeFirst();
}
}
return queue.size();
}
public boolean duplicate (LinkedList<Character> queue) {
Set<Character> set = new HashSet<>();
for (char c : queue) {
set.add(c);
}
return set.size() == queue.size();
}
}