给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
class Solution {
public int[] searchRange(int[] nums, int target) {
if(nums.length==0)return new int[]{-1,-1};
if(nums.length==1){
if(nums[0]==target)return new int[]{0,0};
if(nums[0]!=target)return new int[]{-1,-1};
}
int ans[]=new int[2];
ans[0]=returnLeft(nums,target);
ans[1]=returnRight(nums,target);
return ans;
}
public int returnLeft(int nums[],int target){
int l=0;int r=nums.length-1;
while(l<=r){
int mid=(l+r)/2;
if(nums[mid]<target){
l=mid+1;
}else if(nums[mid]>=target){
r=mid-1;
}
}
if(r==nums.length-1)return -1;
if(r<nums.length-1&&nums[r+1]!=target) return -1;
else return r+1;
}
public int returnRight(int nums[],int target){
int l=0;int r=nums.length-1;
while(l<=r){
int mid=(l+r)/2;
if(nums[mid]<=target){
l=mid+1;
}else if(nums[mid]>target){
r=mid-1;
}
}
if(l>=1&&nums[l-1]!=target) return -1;
else return l-1;
}
}
按奇偶顺序排序数组922
class Solution {
public int[] sortArrayByParityII(int[] nums) {
int odd=1;int oven=0;
while(odd<nums.length&&oven<nums.length){
if(nums[odd]%2==0&&nums[oven]%2==1){
int tmp=nums[odd];
nums[odd]=nums[oven];
nums[oven]=tmp;
odd+=2;oven+=2;
}
else if(nums[odd]%2==0&&nums[oven]%2==0){
oven+=2;
}else if(nums[odd]%2==1&&nums[oven]%2==1){
odd+=2;
}else{
odd+=2;oven+=2;
}
}
return nums;
}
}