当前位置:网站首页>力扣刷题记录3.1-----977. 有序数组的平方
力扣刷题记录3.1-----977. 有序数组的平方
2022-08-09 01:51:00 【@白圭】
一、题目
二、代码
class Solution {
public:
vector<int> sortedSquares(vector<int>& nums) {
//本题思路:先把数组分成正负两个 按绝对值排列的数组 然后再处理
//二次思考 直接找到的位置 没必要声明两个数组 干就完事了
//常规变量
int i=0;
int j=0;
int k=0;
//本题变量
int size=0;
size= nums.size();
vector<int> vector_for_return(size,0); //迭代器的使用,必须要先用push_back()或者={}初始化,才可以
if(size!=0)
{
std::cout<<"size "<<size<<std::endl;
int record_positive=0;
// int vector_for_return[size]; //数组声明并且清零
// for(i=0;i<=size-1;i++) vector_for_return[i]=0;
//首先需要找到0 作为分界点
if(nums[0]>=0) //不存在0的情况 全部大于0
{
record_positive=-1;
}
else if(nums[size-1]<0) //不存在0的情况 全部都小于0
{
record_positive=-2;
}
else
{
for(i=0;i<=size-1;i++)
{
if(nums[i]>=0)
{
record_positive=i;
break;
}
}
}
std::cout<<"record_positive "<<record_positive<<std::endl;
if(record_positive==-1) for(i=0;i<=size-1;i++) vector_for_return[i]=nums[i]*nums[i];
if(record_positive==-2) for(i=size-1;i>=0;i--) vector_for_return[(size-1)-i]=nums[i]*nums[i];
if(record_positive!=-1&&record_positive!=-2)
{
j=record_positive-1;
k=record_positive;
std::cout<<"j "<<j<<std::endl;
std::cout<<"k "<<k<<std::endl;
for(i=0;i<=size-1&&j>=0&&k<=size-1;i++)
{
std::cout<<"j in "<<j<<std::endl;
std::cout<<"k in "<<k<<std::endl;
if(nums[j]*nums[j]<=nums[k]*nums[k])
{
vector_for_return[i]=nums[j]*nums[j];
j=j-1;
std::cout<<"j final "<<j<<std::endl;
std::cout<<"i"<<i<<std::endl;
std::cout<<"vector_for_return[i]"<<vector_for_return[i]<<std::endl;
}
else
{
vector_for_return[i]=nums[k]*nums[k];
k=k+1;
std::cout<<"i"<<i<<std::endl;
std::cout<<"vector_for_return[i]"<<vector_for_return[i]<<std::endl;
std::cout<<"k final"<<k<<std::endl;
}
}
//赋值完成后的情况应是一边到结尾 另一边未到
if(j==-1&&k!=size)
{
for(;i<=size-1,k<=size-1;i++,k++) vector_for_return[i]=nums[k]*nums[k];
}
if(j!=-1&&k==size)
{
for(;i<=size-1,j>=0;i++,j--) vector_for_return[i]=nums[j]*nums[j];
}
}
}
else ;
//for(i=0;i<=size-1;i++) std::cout<<"i "<<i<<"vector_for_return[i] "<<vector_for_return[i]<<std::endl;
return vector_for_return;
}
};
三、运行结果
边栏推荐
- Image denoising based on edge enhancement Diffusion 】 (cEED) and Coherence Enhancing coursing together (cCED) filter to realize image denoising matlab code
- 如何在群晖系统中安装cpolar(群晖6.X版)
- LVGL简介(基于v8.1-8.2)
- 【信号去噪】基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附matlab代码
- ROS2 ERROR: OpenGL 1.5 is not supported in GLRenderSystem::initialiseContext at C:\ci\ws\build...
- typescript89-展示任务列表功能
- OpenSceneGraph3.5.1编译
- qps tps rps 区别
- 有相同字符串的查找
- 基于机器学习之模型树短期负荷预测(Matlab代码实现)
猜你喜欢
随机推荐
【Seata】分布式事务Seata入门与实战
程序员的日常生活 | 每日趣闻
Latex example reference
Go-11 - Process Control
makefile file compilation
基于机器学习之模型树短期负荷预测(Matlab代码实现)
The 7 taboos of time management summarized by the postgraduate students, how many have you won?
JDBC技术(一)——一个简单的JDBC测试
ICMP差错报告报文数据字段
全文翻译:EDPB关于VVA(虚拟语音助理)中处理个人数据的指南02/2021
Difference between KQL and Lucene
Wireshark抓包工具
数字孪生+燃气管理,开启智慧燃气管理新模式
保护您的 Web 应用程序的最佳开源 Web 应用程序防火墙
VS中如何添加依赖的库
C语言-大端存储和小端存储
Grid布局介绍
观察者模式
Latex示例参考
SEMRush如何寻找关键词用于投放广告