标题977.有序数组的平方
题目描述
题目链接
![在这里插入图片描述](https://img-blog.csdnimg.cn/6bea727621704768afbd8ca1f326b078.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAd2h1dF81Mnhq,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
方法1:暴力解题
#pragma once
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums)
{
int n = nums.size();
cout << "原始数组" << endl;
for (int i = 0; i < n; i++)
{
cout << nums[i] << " ";
}
cout << endl;
for (int i = 0; i < n; i++)
{
nums[i] = nums[i] * nums[i];
}
cout << "排序之前" << endl;
vector<int>::iterator it;
for (it = nums.begin(); it != nums.end(); it++)
{
cout << *it << " ";
}
cout << endl;
sort(nums.begin(), nums.end());
return nums;
}
};
int main()
{
vector<int> v;
v.push_back(-4);
v.push_back(-1);
v.push_back(0);
v.push_back(3);
v.push_back(10);
Solution S;
S.sortedSquares(v);
system("pause");
return 0;
}
运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/79e49c0e12df4f8aaab6f0344a5247d3.png#pic_center)
提交结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/19c66aa7e9944d2482140fc3e4823957.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAd2h1dF81Mnhq,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)
方法2:对撞双指针法
#pragma once
#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums)
{
vector<int> result_v(nums.size(), 0);
int index = result_v.size() - 1;
int n = nums.size();
int frontp = 0;
int rearp = n - 1;
while (frontp <= rearp)
{
if (nums[frontp] * nums[frontp] < nums[rearp] * nums[rearp])
{
result_v[index] = nums[rearp] * nums[rearp];
index--;
rearp--;
}
else
{
result_v[index] = nums[frontp] * nums[frontp];
index--;
frontp++;
}
}
vector<int>::iterator it;
for (it = result_v.begin(); it != result_v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
return result_v;
}
};
int main()
{
vector<int> v;
v.push_back(-4);
v.push_back(-1);
v.push_back(0);
v.push_back(3);
v.push_back(10);
Solution S;
S.sortedSquares(v);
system("pause");
return 0;
}
运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/3ba4e4ced62d4330b9cbff82f83361dc.png#pic_center)
提交结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/e6dc1685869d4c49a98dc7727fe8f3f2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAd2h1dF81Mnhq,size_16,color_FFFFFF,t_70,g_se,x_16#pic_center)