leetcode 977.有序数组的平方(使用双指针)
给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
class Solution {
public int[] sortedSquares(int[] nums) {
int left = 0;//左指针
int right = nums.length-1;//右指针
int[] result = new int[nums.length];
int index = nums.length-1;
while(index >=0 && left <= right){
if(nums[left]*nums[left] > nums[right]*nums[right]){
result[index--] = nums[left]*nums[left];
left++;
}else{
result[index--] = nums[right]*nums[right];
right--;
}
}
return result;
}
}
leetcode 209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和≥ target的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。
class Solution {
public int minSubArrayLen(int target, int[] nums) {
//滑动窗口
int left = 0;//滑动窗口起始位置,right为滑动窗口结束位置
int sum = 0;
int result = Integer.MAX_VALUE;
for(int right = 0;right < nums.length;right++){
sum += nums[right];
while(sum>=target){
result = Math.min(result,right-left+1);
sum -= nums[left++];
}
}
return result == Integer.MAX_VALUE?0:result;//三目运算法
}
}