c++ 未显示数组的第一个元素

eqqqjvef  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(203)

我编写了一个函数,它将每个数字平方,然后按升序对数组排序
但是当我运行代码时,它没有显示数组的第一个元素
例如,如果数组为[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;
}
e4eetjau

e4eetjau1#

您在sortedSquaredArray函数内的“while”中缺少一个等号。它应该如下所示:while(leftPtr <= rightPtr) .

相关问题