我编写了一个函数,它将每个数字平方,然后按升序对数组排序
但是当我运行代码时,它没有显示数组的第一个元素
例如,如果数组为[1 2 3 4 5]
只显示[ 4 9 16 25 ]
编码:
#include <bits/stdc++.h>
#include<vector>
using namespace std;
void sortedSquaredArray(vector<int> &v){
vector<int> ans;
int leftPtr = 0;
int rightPtr = v.size()-1;
while(leftPtr < rightPtr){
if(abs(v[leftPtr]) < abs(v[rightPtr])){
ans.push_back(v[rightPtr] * v[rightPtr]);
rightPtr--;
}
else{
ans.push_back(v[leftPtr] * v[leftPtr]);
leftPtr++;
}
}
reverse(ans.begin(),ans.end());
cout<<"Sorted Squared Array: [ ";
for(int i=0; i<ans.size(); i++){
cout<<ans[i]<<" ";
}
cout<<"]"<<endl;
}
int main(){
// ? Given an integer array 'a' sorted in non-decreasing order, return an array of squares of each number sorted in non-decreasing order
int n; cin>>n;
vector<int> v;
for(int i=0; i<n; i++){
int ele; cin>>ele;
v.push_back(ele);
}
sortedSquaredArray(v);
return 0;
}
1条答案
按热度按时间e4eetjau1#
您在sortedSquaredArray函数内的“while”中缺少一个等号。它应该如下所示:
while(leftPtr <= rightPtr)
.