704. 二分查找
难度:简单
代码:
class Solution {
public int search(int[] nums, int target) {
int left=0,right=nums.length-1;
while(left<=right){
int mid=(left+right)>>1;
if(nums[mid]==target)
return mid;
else if(nums[mid]>target)
right=mid-1;
else
left=mid+1;
}
return -1;
}
}
27. 移除元素
难度:简单
代码:
class Solution {
public int removeElement(int[] nums, int val) {
int j=0,k=0;
while(k<nums.length){
if(nums[k]!=val)
nums[j++]=nums[k];
k++;
}
return j;
}
}
977. 有序数组的平方
题目链接:977. 有序数组的平方 - 力扣(LeetCode)
难度:简单
解题思路:新建一个数组,然后从原数组两端向内开始比较,哪个平方数大,哪个放进新数组的最右端
代码:
class Solution {
public int[] sortedSquares(int[] nums) {
int left=0,right=nums.length-1,k=nums.length-1;
int[] ans=new int[nums.length];
while(left<=right){
if(nums[left]*nums[left]>nums[right]*nums[right]){
ans[k--]=nums[left]*nums[left];
left++;
}
else{
ans[k--]=nums[right]*nums[right];
right--;
}
}
return ans;
}
}
209. 长度最小的子数组
题目链接:209. 长度最小的子数组 - 力扣(LeetCode)
难度:中等
解题思路:滑动窗口
代码:
class Solution {
public int minSubArrayLen(int target, int[] nums) {
int j=0,k=0,min=nums.length+1,sum=0;
while(k<nums.length){
sum+=nums[k];
while(sum>=target){
if(sum-nums[j]>=target&&j+1<=k){
sum-=nums[j++];
}
else break;
}
if(sum>=target){
min=k-j+1<min?k-j+1:min;
}
k++;
}
return min==nums.length+1?0:min;
}
}