• 力扣刷题记录3.1-----977. 有序数组的平方



    一、题目

    在这里插入图片描述

    二、代码

    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  "<
            return vector_for_return;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108

    三、运行结果

    在这里插入图片描述

  • 相关阅读:
    STM32:时钟树原理概要
    【Vite + Vue3】ElementPlus el-select 实现下拉选择图标,并将图标回显到选择框中
    Android中单例模式正确实现方式
    Word处理控件Aspose.Words功能演示:从 Java 中的 Word 文档中提取图像
    MongoDB聚合操作符:$addToSet
    (二) selenium元素定位
    2022阿里巴巴全球数学竞赛 第4题 虎虎生威(盲盒问题、集卡问题)解决思路
    微服务-Feign
    字节跳动技术面都过了,结果还是被刷了,问HR原因竟是。。。
    开发者必读:2022年移动应用运营增长洞察白皮书
  • 原文地址:https://blog.csdn.net/taiyuezyh/article/details/126177963