首页 > 其他分享 >977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

时间:2024-06-22 23:31:59浏览次数:14  
标签:977 59 Temp nums int sum ++ 数组 ptr

977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

977.有序数组的平方

题目链接 : 977. 有序数组的平方 - 力扣(LeetCode)

 

代码 :

class Solution {
public:
   vector<int> sortedSquares(vector<int>& nums) {

       //int length = end(nums) - begin(nums);
       int length = nums.size();

       int ptr_Left;
       int ptr_Right;

       vector<int> array_Receive(length);

       int ptr_ArrayReceive ;

       ptr_Left = 0;
       ptr_Right = length - 1;

       ptr_ArrayReceive = length - 1 ;           // 平方 和 数组   从 最大值 侧 开始   放  

       while(ptr_Left <= ptr_Right)
      {
           // 注意 这里 需要 比较 的 是 “绝对值”

           if(abs(nums[ptr_Left])>= abs(nums[ptr_Right]))
          {
               array_Receive[ptr_ArrayReceive] = ( nums[ptr_Left] * nums[ptr_Left] );
               ptr_ArrayReceive--;

               ptr_Left++;

          }
           else
          {
               array_Receive[ptr_ArrayReceive] = ( nums[ptr_Right] * nums[ptr_Right] );
               ptr_ArrayReceive--;

               ptr_Right--;
               
          }



      }

       return array_Receive;


  }
};

 

 

209.长度最小的子数组

题目链接 : 209. 长度最小的子数组 - 力扣(LeetCode)

 

代码 :

class Solution {
public:
   int minSubArrayLen(int target, vector<int>& nums) {
       int length = nums.size();

       int ptr_Front ;
       int ptr_Back ;

       int countLength;

       int MinLength;

       int sum_Temp = 0;

       int sum_Next_Temp;

       ptr_Front = 0;
       ptr_Back = 0;


       countLength = 0;


       while( ptr_Front < length && sum_Temp < target )
      {
           sum_Temp += nums[ptr_Front];

           ptr_Front++;
           countLength++;

      }

       // 边界 考虑                                  

       if(sum_Temp < target )
      {
           return 0;

      }

       MinLength = countLength;


       // 在 这 道 题 中     首次 处理   跟随 的 缩短 长度   的     处理          

       //////////////////////////////////////

       sum_Next_Temp = sum_Temp;

       // 打印 测试  

       do
      {
           // 注意 边界 考虑    

           sum_Temp = sum_Next_Temp;

           sum_Next_Temp = sum_Temp - nums[ptr_Back] ;

           if(sum_Next_Temp >= target)
          {
               ptr_Back++;
               countLength--;

               if(countLength < MinLength)
              {
                   MinLength = countLength;

              }

          }
               
      }while(sum_Next_Temp >= target );




       //////////////////////////////////////



       while(ptr_Front < length )
      {
           // 打印 测试  

           // “ 向 右 添加 一格 ”
                                                       // “ 发展   ”
           //“类 回溯 法”
           sum_Temp += nums[ptr_Front];
           ptr_Front++;

           countLength++;

           //从 左侧 尝试 缩短 长度

           sum_Next_Temp = sum_Temp;

           // 打印 测试  

           do
          {
               // 注意 边界 考虑    

               sum_Temp = sum_Next_Temp;

               sum_Next_Temp = sum_Temp - nums[ptr_Back] ;

               if(sum_Next_Temp >= target)
              {
                   ptr_Back++;
                   countLength--;

                   if(countLength < MinLength)
                  {
                       MinLength = countLength;

                  }

              }
               
          }while(sum_Next_Temp >= target );

           // 测试 时 对 溢出 情况 的 分析 ,/ “ 相关 分析 ”

           // “ 可靠性 处理 ”               , 健壮 性 处理    


      }

       return MinLength;


  }
};

 

59.螺旋矩阵II

题目链接 : 59. 螺旋矩阵 II - 力扣(LeetCode)

 

代码 :

class Solution {
public:
   vector<vector<int>> generateMatrix(int n) {

       vector<vector<int>> array_TwoDimention_Receive( n , vector<int>(n) );

       int worker_Outer_Thickness = n ;
       
       int padding_Thickness = 0;

       int i;
       int j;

       // 变量 初始化  

       int num_Accumulate ;

       i = 0;
       j = 0;

       num_Accumulate = 1;

       if(n == 1)
      {
           array_TwoDimention_Receive[0][0] = 1 ;

           return array_TwoDimention_Receive;

      }

       while(worker_Outer_Thickness > 1)
      {
           for(; j < (n - padding_Thickness) - 1 ; j++ )
          {
               array_TwoDimention_Receive[i][j] = num_Accumulate ;
               num_Accumulate ++ ;


          }

           for(; i < (n - padding_Thickness) - 1 ; i++ )
          {
               array_TwoDimention_Receive[i][j] = num_Accumulate ;
               num_Accumulate ++ ;
               
          }

           for(; j > padding_Thickness ; j-- )
          {
               array_TwoDimention_Receive[i][j] = num_Accumulate ;
               num_Accumulate ++ ;

          }

           for(; i > padding_Thickness ; i-- )
          {
               array_TwoDimention_Receive[i][j] = num_Accumulate ;
               num_Accumulate ++ ;

          }

           // “ 变 向 ” / “ 变 向 操作 ”
           i++;
           j++;


           worker_Outer_Thickness -= 2 ;

           padding_Thickness += 1 ;

      }

       if(worker_Outer_Thickness == 1)
      {
           array_TwoDimention_Receive[i][j] = num_Accumulate ;
           num_Accumulate ++ ;

           
      }

       return array_TwoDimention_Receive ;

  }
};
 

标签:977,59,Temp,nums,int,sum,++,数组,ptr
From: https://www.cnblogs.com/brinisky/p/18262876

相关文章

  • 238. 除自身以外数组的乘积
    题目给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据保证数组nums之中任意元素的全部前缀元素和后缀的乘积都在32位整数范围内。请不要使用除法,且在O(n)时间复杂度内完成此题。示例1:输入:nums=......
  • UNIQUE VISION Programming Contest 2024 Summer (AtCoder Beginner Contest 359) 题
    点我看题A-CountTakahashi没啥好说的点击查看代码#include<bits/stdc++.h>#definerep(i,n)for(inti=0;i<n;++i)#definerepn(i,n)for(inti=1;i<=n;++i)#defineLLlonglong#definefifirst#definesesecond#definepbpush_back#definemprmake_pair......
  • abc359_G Sum of Tree Distance 题解
    题目链接:Atcoder或者洛谷先考虑暴力,显然是枚举整棵树的路径,这个枚举复杂度显示是\(O(n^2)\),还不考虑计算\(f(i,j)\),考虑使用点分治优化枚举复杂度:\(O(n\log{n})\)。接下来考虑如何计算每条路径的\(f(i,j)\),注意到\(f(i,j)\):当且仅当\(a[i]=a[j]\)时,答案加上\(dis(i,j......
  • AtCoder Beginner Contest 359 解题报告
    AtCoderBeginnerContest359吐槽:A-F还算正常,G题你tm给我放了个出过的板子(ABC340G)是几个意思啊???ASimulate.#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#defineendl'\n'#definePBemplace_back#definePPBpop_back#defineMPmake_pai......
  • 2024-06-22:用go语言,给定一个起始下标为 0 的长度为3的整数数组 nums,根据这些数字构建
    2024-06-22:用go语言,给定一个起始下标为0的长度为3的整数数组nums,根据这些数字构建三角形。如果无法构成三角形,则返回"none";否则根据三角形的边长关系返回对应类型的字符串:equilateral(等边三角形)、isosceles(等腰三角形)或scalene(不等边三角形)。输入:nums=[3,3,3]。输出:"e......
  • 【C语言/C++干货系列】你真的了解数组吗?
    目录广告前言一维数组二维数组字符数组尾声广告                      点击......
  • Perl编程探索:深入理解数组变量
    Perl语言以其在文本处理和系统管理任务中的强大能力而受到广泛欢迎。在Perl中,数组是处理多个值集合的一种关键数据结构。本文将深入探讨Perl中的数组变量,包括它们的声明、初始化、访问和操作。Perl数组的基本概念在Perl中,数组可以用来存储一系列的值,这些值可以是数字、字......
  • 使用三种方式通过数组实现拷贝复制
    三种通过数组的方式进行数组的拷贝,其本质都是通过地址传参,来实现数组的拷贝。1、通过数组访问这种访问数组的方式是最常见的voidcopy1(doubletarget[],doublesource[],intlen){for(inti=0;i<len;++i){target[i]=source[i];}}i......
  • NumPy数组的合并
    NumPy数组的合并方法说明concatenate()沿现有维度合并hstack()沿现有维度水平合并vstack()沿现有维度垂直合并stack()沿新维度合并1.concatenate()np.concatenate((arr1,arr2),axis=n)importnumpyasnparr1=np.array([[1,2],[3,4]])arr2......
  • 6-Azidohexanoic Acid,79598-53-1
    基本信息6-叠氮基己酸是一种末端带有叠氮基团的六碳饱和脂肪酸,主要用于点击化学反应。它的英文名是6-Azido-hexanoicacid,还有其他几种同义名,如e-Azidocaproicacid。化学性质6-叠氮基己酸是一种无色至淡黄色的液体,熔点未记录,易溶于氯仿和甲醇。它的分子式是C6H11N3O2,分子量......