首页 > 其他分享 >代码随想录第二天|977.有序数组的平方;209.长度最小的子数组;59.螺旋矩阵II,总结

代码随想录第二天|977.有序数组的平方;209.长度最小的子数组;59.螺旋矩阵II,总结

时间:2023-08-24 23:04:11浏览次数:51  
标签:977 startx int res 随想录 ++ vector 数组

今天的这三道题每道题对我来说都不简单,有序数组的平方和长度最小的子数组这两道题还能用暴力求解,螺旋矩阵看着简单却没有思路,磨了半小时还是决定直接看讲解

有序数组平方和用的双指针的思想,代码如下:

 1 class Solution {
 2 public:
 3     vector<int> sortedSquares(vector<int>& nums) {
 4         int n = nums.size();
 5         vector<int> A(n);
 6         int head,tail,a,b;
 7         head =0;
 8         tail = n-1;
 9         int p = n-1;
10         while(head<=tail){
11             a = nums[head]*nums[head];
12             b = nums[tail]*nums[tail];
13             if(a<b){
14                 A[p]=b;
15                 tail--;
16                 p--;
17             }else{
18                 A[p]=a;
19                 head++;
20                 p--;
21             }
22         }
23         return A;
24     }
25 };

长度最小子数组使用滑动窗口的思想:

 1 class Solution {
 2 public:
 3     int minSubArrayLen(int target, vector<int>& nums) {
 4         int result = INT32_MAX;
 5         int len=0;
 6         int sum =0;
 7         int j=0;
 8         for(int i=0;i<nums.size();i++){
 9             sum +=nums[i];
10             while(sum>=target){
11                 len = i-j+1;
12                 result = result<len?result:len;
13                 sum-=nums[j];
14                 j++;
15             }       
16             
17         }
18         return result==INT32_MAX?0:result;
19     }
20 };

螺旋矩阵的思想是按从左到右、从上到下、从右到左、从下到上这个循环来赋值

 1 class Solution {
 2 public:
 3     vector<vector<int>> generateMatrix(int n) {
 4         vector<vector<int>> res(n,vector<int>(n,0));
 5         int startx=0,starty=0;
 6         int loop = n/2;
 7         int mid = n/2;
 8         int i=0,j=0;
 9         int offset=1;
10         int count = 1;
11         while(loop>0){
12             i=starty;
13             j=startx;
14             for(j=startx;j<n-offset;j++)
15                 res[i][j]=count++;
16             for(i=starty;i<n-offset;i++)
17                 res[i][j]=count++;
18             for(;j>offset-1;j--)
19                 res[i][j]=count++;
20             for(;i>offset-1;i--)
21                 res[i][j]=count++;
22             loop--;
23             offset+=1;
24             startx++;
25             starty++;
26         }
27         if(n%2==1)
28             res[mid][mid]=n*n;
29         return res;
30     }
31 };

 

标签:977,startx,int,res,随想录,++,vector,数组
From: https://www.cnblogs.com/yangboran/p/17655402.html

相关文章

  • Python 中如何向列表或数组添加元素
    1.Python中的列表是什么?给初学者的定义编程中的数组是一个有序的项目集合,所有的项目都需要是相同的数据类型。然而,与其它编程语言不同,数组在Python中不是一个内置的数据结构。Python使用列表取代传统的数组。列表本质上是动态数组,是Python中最常见的和最强大的数据结构之......
  • Go语言数组的使用
    目录1.数组的使用1.1数组的定义方式1:1.2数组的定义方式2:1.3数组的定义方式3:1.4数组的定义方式4:1.5数组的遍历1:1.6数组的遍历2:1.7数组的遍历3:1.8数组的遍历4:1.数组的使用1.1数组的定义方式1:packagemainimport"fmt"funcmain(){ vararr[3]string arr[0]="A......
  • typescript 数组根据指定字段去重
    this.listDataIn=data.Result.data;constuniqueItems:Item[]=Array.from(newSet(this.listDataIn.map(item=>item.MyLandID))).map(id=>{returnobj.listDataIn.find(item=>item.MyLandID===id);});......
  • 基础题数组-485、283、27
    485. 最大连续1的个数1classSolution:2deffindMaxConsecutiveOnes(self,nums:List[int])->int:3maxCount=count=045fori,numinenumerate(nums):6ifnum==1:7count+=18......
  • 寻找数组的中心下标
    一、问题描述给你一个整数数组nums,请计算数组的中心下标。数组中心下标是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为0,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如......
  • [代码随想录]Day26-回溯算法part06
    题目:332.重新安排行程思路:其实这里已经是图的部分了,回溯应该也可以。Hierholzer算法解决欧拉问题代码:funcfindItinerary(tickets[][]string)[]string{var(m=map[string][]string{}res[]string)for_,ticket:=rangeticket......
  • 代码随想录第一天|704.二分查找、27.移除元素
    二分查找对数组的要求有两点:有序无重复元素,若有重复元素则返回的元素下标不唯一边界条件是while(left<=right)代码其实是很好理解的点击查看代码classSolution{public:intsearch(vector<int>&nums,inttarget){intlength=nums.size();......
  • 从数组中构建二叉树
    #include<iostream>#include<sstream>#include<stack>#include<vector>#include<queue>usingnamespacestd;structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode():val(0),left(nullptr),......
  • JS 给json数组新增对象
    varjsonstr="[{'name':'a','value':1},{'name':'b','value':2}]";varjsonarray=eval('('+jsonstr+')');vararr={"name":$('#names').val(),&qu......
  • slice 切片数组测试记录【GO 基础】
    〇、测试前准备本文是在GO环境下测试记录系列之一,GO基本环境部署步骤将略过,直接上代码。下面是常用命令:【初始化+运行+编译】//{GOPATH}环境变量值,example项目文件夹名称{GOPATH}\src\example>//运行代码//xxx.go为文件全名gorunxxx.go//初始化//重复......