How to solve LeetCode 977: Square of a Sorted Array problem?
- 内容介绍
- 文章标签
- 相关推荐
本文共计314个文字,预计阅读时间需要2分钟。
题目描述:给你一个按非递减顺序排列的整数数组nums,请你返回每个数字的平方组成的数组,也按非递减顺序排列。
分析:通过双指针从数组的两端开始操作,比较两端数字的平方,将较大的平方值放入结果数组中,并移动相应的指针。这样可以确保结果数组始终保持非递减顺序。
题目描述:
给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
分析:
通过双指针从数组两边进行操作,对于新的数组,从右向左填数
代码实现:
class Solution {public int search(int[] nums, int target) {
int left=0;//数组最左边下标
int right=nums.length-1; //数组最右边下标
while(left<=right){
int middle=left+(right-left)/2;//此写法可以防止溢出
if(nums[middle]<target){
left=middle+1;
}else if(nums[middle]>target){
right=middle-1;
}else{
return middle;
}
}
return -1;
}
}
本文共计314个文字,预计阅读时间需要2分钟。
题目描述:给你一个按非递减顺序排列的整数数组nums,请你返回每个数字的平方组成的数组,也按非递减顺序排列。
分析:通过双指针从数组的两端开始操作,比较两端数字的平方,将较大的平方值放入结果数组中,并移动相应的指针。这样可以确保结果数组始终保持非递减顺序。
题目描述:
给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。
分析:
通过双指针从数组两边进行操作,对于新的数组,从右向左填数
代码实现:
class Solution {public int search(int[] nums, int target) {
int left=0;//数组最左边下标
int right=nums.length-1; //数组最右边下标
while(left<=right){
int middle=left+(right-left)/2;//此写法可以防止溢出
if(nums[middle]<target){
left=middle+1;
}else if(nums[middle]>target){
right=middle-1;
}else{
return middle;
}
}
return -1;
}
}

