当前位置:网站首页>力扣刷题记录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;
}
};
三、运行结果
边栏推荐
猜你喜欢
随机推荐
Go-8-Gin框架
虹科技术|如何阻止供应链攻击?
[Cellular Automata] Simulation of emergency evacuation of disaster personnel under social force factors based on cellular automata with matlab code attached
typescript89-展示任务列表功能
企业里Foxmail邮箱问题解决方法汇总
Go-11 - Process Control
JDBC技术(二)——设置通用的sql和配置文件
OpenMLDB + Jupyter Notebook:快速搭建机器学习应用
torchversion.transforms的使用
智能视频监控设计摄像头部分
【Seata】分布式事务Seata入门与实战
Observer pattern
HCIP-R&S By Wakin自用笔记(2)OSPF之OSPF回顾、虚连接
入门数据库Days5
gstreamer 记录
在实际工作中如何开展性能测试?
Oracle最后一个商用免费版本JDK1.8.202
全文翻译:欧盟第29条数据保护工作组 数据保护官指南
『Another Redis DeskTop Manager』用了这款Redis可视化工具,分析效率提升12倍
保护您的 Web 应用程序的最佳开源 Web 应用程序防火墙