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

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

时间:2023-12-01 18:33:31浏览次数:35  
标签:977 count CacheSpiralMatrix 59 ++ len int Edge 数组

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

 

977.有序数组的平方

思路:

分别 从 数组 的 左 , 右 向 另一侧 / 中间 趋近,

新 建立 一个 数组 接收 (有序 序列) (动态 地 在 过程 中 接收 数据)

 

 

拓展 为 各个 任务 分配 工作 指针 , 形成 多指针

有序 数字 序列 ,使用 双指针 从 两侧 趋近 , 可以 有效 地 转化 为 绝对值 序列 , (从 放置 “大” 绝对值 得 位置 开始 写入 (可以 是 从右往左))

 

vector<int> sortedSquares(vector<int>& nums) {
       int len = end(nums) - begin(nums);

       int i = 0;
       int j = len - 1 ;
       int k = len - 1;

       vector<int> TempReceive(len,0);

       int Temp_Cache_Left = nums[i]*nums[i];
       int Temp_Cache_Right = nums[j]*nums[j];

       while(i <= j)
      {


           //内循环
           if((Temp_Cache_Left) >= (Temp_Cache_Right)       )         // 基础逻辑 与 代码 优化          
          {
               TempReceive[k] = Temp_Cache_Left;
               k--;
               i++;
               if(i < len)         //防 溢出
              {  
                   Temp_Cache_Left = nums[i]*nums[i];
              }

          }
           else
          {
               TempReceive[k] = Temp_Cache_Right;
               k--;
               j--;

               if(j >= 0 )
              {
                   Temp_Cache_Right = nums[j]*nums[j];
              }

          }

      }


       return TempReceive;

  }

 

 

时间 吃紧 , 先把 练习 代码 贴上 , 随后 补充 细节 / 思路 , “解题” 时 的 情况 / 环境 , 总结

 

 

59.螺旋矩阵II
vector<vector<int>> generateMatrix(int n) {
       // n   “ 边长 ”

       int count = 0;

       int i = 0;
       int j = 0;

       int k = 0;

       int len_Edge = n;

       vector<vector<int>> CacheSpiralMatrix(n , vector<int>(n , 0));

       //内循环

       // 注意 螺旋 矩阵 的 结构

       // 区分 奇偶 情况

       if((n % 2) == 0 )
      {
           while(len_Edge > 0)
          {
               for(k = 0 ; k < (len_Edge-1) ; k++ )
              {
                   count++;
                   CacheSpiralMatrix[i][j] = count;
                   j++;
              }

               for(k = 0 ; k < (len_Edge-1) ; k++ )
              {
                   count++;
                   CacheSpiralMatrix[i][j] = count;
                   i++;
              }

               for(k = 0 ; k < (len_Edge-1) ; k++ )
              {
                   count++;
                   CacheSpiralMatrix[i][j] = count;
                   j--;
              }

               for(k = 0 ; k < (len_Edge-1) ; k++ )
              {
                   count++;
                   CacheSpiralMatrix[i][j] = count;
                   i--;
              }

               i++;
               j++;

               len_Edge -= 2 ;          //len_Edge = len_Edge - 2;

          }
      }
       else
      {
           while(len_Edge > 1)
          {
               for(k = 0 ; k < (len_Edge-1) ; k++ )
              {
                   count++;
                   CacheSpiralMatrix[i][j] = count;
                   j++;
              }

               for(k = 0 ; k < (len_Edge-1) ; k++ )
              {
                   count++;
                   CacheSpiralMatrix[i][j] = count;
                   i++;
              }

               for(k = 0 ; k < (len_Edge-1) ; k++ )
              {
                   count++;
                   CacheSpiralMatrix[i][j] = count;
                   j--;
              }

               for(k = 0 ; k < (len_Edge-1) ; k++ )
              {
                   count++;
                   CacheSpiralMatrix[i][j] = count;
                   i--;
              }

               i++;
               j++;

               len_Edge -= 2 ;          //len_Edge = len_Edge - 2;

          }

           // “ len_Edge == 1 时 ”

           count++;
           CacheSpiralMatrix[i][j] = count;

      }




       return CacheSpiralMatrix;




  }
 

 

 

标签:977,count,CacheSpiralMatrix,59,++,len,int,Edge,数组
From: https://www.cnblogs.com/brinisky/p/17870688.html

相关文章

  • 代码随想训练营第五十二天(Python)| 300.最长递增子序列、674. 最长连续递增序列、718.
    300.最长递增子序列classSolution:deflengthOfLIS(self,nums:List[int])->int:iflen(nums)<=1:returnlen(nums)#dp数组代表以nums[i]结尾的最长递增子序列长度为dp[i]dp=[1]*len(nums)res=1......
  • P6859 蝴蝶与花 题解
    题意:有一个长度为$n$的序列$a$,其中所有元素都为$1$或$2$,要求进行$q$次操作,每次操作为以下之一:$A$$s$:询问是否存在$a$的连续子序列满足其中元素总和为$s$,若有合法的方案,输出这个方案的左右端点位置(多种方案时输出左端点最小的方案),否则输出$......
  • 数状数组
    1.循环右移,老套路了,直接开2n数组然后利用树状数组进行区间求和和单点修改,每次减去之前以及出现过的值Problem-E-Codeforces1#include<bits/stdc++.h>2usingnamespacestd;34constintN=1e6+10;56intt;7intc[N*2];8intsum(intx)9{......
  • k8s 安装kubevirt v0.59.0 (k3s v1.26.4)
    1.安装kubevirt-operator.yaml(可以直接指定VERSION=v0.59.0-alpha.2;可以直接先在浏览器访问github下载yaml)exportVERSION=$(curl-shttps://api.github.com/repos/kubevirt/kubevirt/releases|greptag_name|grep-v--'-rc'|sort-r|head-1|awk-F':'&#......
  • 【差分数组】我的日程安排表
    一、我的日程安排表I题目链接:我的日程安排表I实现一个MyCalendar类来存放你的日程安排。如果要添加的日程安排不会造成重复预订,则可以存储这个新的日程安排。当两个日程安排有一些时间上的交叉时(例如两个日程安排都在同一时间内),就会产生重复预订。日程可以用一对整数......
  • P1359 租用游艇
    租用游艇题目描述长江游艇俱乐部在长江上设置了\(n\)个游艇出租站\(1,2,\cdots,n\)。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站\(i\)到游艇出租站\(j\)之间的租金为\(r(i,j)\)(\(1\lei\ltj\len\))。试设计一个算法,计算出从游艇......
  • 【C语言】【二级】移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p的数组元
    题目请编写函数fun,函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;p的值为3。移动后,一维数组中的内容应为:5,6,7,8,9,10,1,2,3,4。考点一维数组、......
  • 通过Span实现高性能数组,实例解析
    Span<T>是C#7.2引入的一个强大的数据结构,用于表示内存中的一块连续数据。它可以用于实现高性能的数组操作,而无需额外的内存分配。在本文中,我将详细介绍如何使用Span<T>来实现高性能数组操作,并提供一些示例代码来说明其用法。什么是Span?Span<T>是System.Memory命名空间......
  • 指针数组和数组指针
    intmain(){int*p1[10];int(*p2)[10];return0;}首先要知道,[]优先级是要高于*号。int*p1[10],p1优先和数组结合,那么此时p1就是一个数组,里面存放的内容都是指针类型,所以p1是一个数组,里面存放的内容是指针的地址,叫指针数组。int(*p2)[10],在这里*号优先......
  • Java Learning Day3 数组
    System.out.print;  System.out.println;每输出一次就会换行Integer.parseInt字符串转intDouble.parseDouble字符串转double数组存储结构连续,存储元素类型相同,随机访问 JVMJVM栈:JVM栈正是java中方法执行时所占有的空间、局部变量会存于栈帧中堆:堆是JVM内存中最大......