C ++中排序数组的平方
在给定的排序整数数组中,任务是打印每个数组元素的平方并按排序顺序打印数组。例如,
输入1-
arr[ ] = { -3,-1,0,1,4,6 };输出-
{0,1,1,9,16, 36}说明-给定数组[-3,-1,0,1,4,6]的每个元素的平方为[0,1,1,9,16,36]。
输入-2-
arr[ ]= { 0,1,2,8,9 }输出-
{0,1,4,64,81}说明-给定数组[0,1,2,8,9]的每个元素的平方为[0,1,4,64,81]。
解决这个问题的方法
为了解决这个特定问题,我们可以使用两指针方法。在“两指针”中,我们使用左右两个指针。左指针用数组的第一个元素初始化,右指针指向数组的结束元素。
在遍历数组的元素时,我们将找到值的平方并检查右整数的平方是大于还是小于左整数。
以递增顺序输入整数数组。
整数函数squareAndSort(int*arr,intn)将输入作为整数数组,并以排序的方式返回数组中每个元素的平方。
用数组的left元素和最右边的元素向左和向右初始化两个指针。
打印元素的平方,并将其与右边元素的平方进行比较。
相应地增加和减少左指针和右指针。
示例
#include <bits/stdc++.h>
using namespace std;
vector<int> squareAndSort(vector<int>&arr){
int left= 0;
int right= arr.size()-1;
vector<int>vec;
while(left<=right){
while(left <= right) {
int v1 = arr[left]*arr[left];
int v2 = arr[right]*arr[right];
if(v1 <= v2) {
vec.push_back(v2);
right--;
}
else {
vec.push_back(v1);
left++;
}
}
reverse(vec.begin(), vec.end());
}
return vec;
}
int main(){
vector<int>arr= {-3,-1,0,1,4,6};
vector<int>ans= squareAndSort(arr);
for(auto x:ans){
cout<<x<<" ";
}
return 0;
}输出结果运行上面的代码将生成如下输出:
0 1 1 9 16 36
数组中每个元素的平方为9,1,0,1,16,36。对这些元素进行排序后,输出将为01191636。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下