有序数组的排序

有序数组的排序-双指针法

题目:给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。

难度:==简单==

题解思路:数组是有序的,最大值只能在数组的两端。使用对撞指针,i指向起始位置,j指向最终位置。设置一个result数组,数组长度为nums.zise(),k指向最后的位置。

那么有以下两种情况:

nums[i]*nums[i] < nums[j][j],那么result[k--] = nums[j]*nums[j],且j--;

nums[i]*nums[i] > nums[j][j],那么result[k--] = nums[i]*nums[i],且i++

int i = 0, j = nums.size()-1;

vector<int> v(j+1,-1);
int k = j;

while (i <= j){
	if(nums[i]*nums[i] < nums[j]*nums[j]){
    	result[k--] = nums[j]*nums[j];
        j--;
    }
    else{
    	result[k--] = nums[i]*nums[i];
        i++;
    }
}
return result;

注意:看了代码随想录的文章之后写的,不是原创(完全抄啦)

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 11:16
点赞 评论 收藏
分享
zYvv:双一流加大加粗再标红,然后广投。主要是获奖荣誉不够,建议开始不用追求大厂,去别的厂子刷下实习。
点赞 评论 收藏
分享
Lorn的意义:你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务