首页 > 其他分享 >DAY2 数组part02

DAY2 数组part02

时间:2024-07-18 15:43:21浏览次数:7  
标签:数组 nums int part02 DAY2 vector result https com

 

今日任务

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

977.有序数组的平方

题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/

文章讲解:https://programmercarl.com/0977.%E6%9C%89%E5%BA%8F%E6%95%B0%E7%BB%84%E7%9A%84%E5%B9%B3%E6%96%B9.html

视频讲解: https://www.bilibili.com/video/BV1QB4y1D7ep

解法一:暴力解法(函数sort)

*C++ sort()排序详解-CSDN博客

*sort使用快排,复杂度为nlogn

 1 class Solution {
 2 public:
 3     vector<int> sortedSquares(vector<int>& nums) {
 4         for(int i=0;i<nums.size();i++)
 5         {
 6             nums[i]*=nums[i];
 7         }
 8         sort(nums.begin(),nums.end());
 9         return nums;
10     }
11 };

 

解法二:双指针

 1 class Solution {
 2 public:
 3     vector<int> sortedSquares(vector<int>& nums) {
 4         for(int i=0;i<nums.size();i++)
 5         {
 6             nums[i]*=nums[i];
 7         }
 8         int left=0;
 9         int right=nums.size()-1;
10         int k=nums.size()-1;
11         vector<int> result(nums.size(),0);//注意初始化语法
12         while(left<=right)
13         {
14             if(nums[left]<nums[right]) result[k--]=nums[right--];
15             else result[k--]=nums[left++];
16         }
17         return result;
18     }
19 };

 *根据平方之后数组的大小,使用双指针

 

209.长度最小的子数组

题目链接:https://leetcode.cn/problems/minimum-size-subarray-sum/

文章讲解:https://programmercarl.com/0209.%E9%95%BF%E5%BA%A6%E6%9C%80%E5%B0%8F%E7%9A%84%E5%AD%90%E6%95%B0%E7%BB%84.html

视频讲解:https://www.bilibili.com/video/BV1tZ4y1q7XE

*滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。从而将O(n^2)暴力解法降为O(n)。

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

 

59.螺旋矩阵II

题目链接:https://leetcode.cn/problems/spiral-matrix-ii/

文章讲解:https://programmercarl.com/0059.%E8%9E%BA%E6%97%8B%E7%9F%A9%E9%98%B5II.html

视频讲解:https://www.bilibili.com/video/BV1SL4y1N7mV/

 1 class Solution {
 2 public:
 3     vector<vector<int>> generateMatrix(int n) {
 4     int i,j,num,k;
 5     vector<vector<int>> a(n,vector<int>(n,0));
 6     //注意二维vector初始化
 7     k=0;
 8     num=1;
 9     while(num<=n*n)
10     {
11         i=j=k;
12         for(j=k;j<n-k-1;j++){
13             a[i][j]=num++;
14         }//j=n-1-k;
15         for(i=k;i<n-k-1;i++)
16         {
17             a[i][j]=num++;
18         }//i=n-k-1=j;
19         for(j=n-k-1;j>k;j--){
20             a[i][j]=num++;
21         }//j=k;i=n-k-1;
22         for(i=n-k-1;i>k;i--){
23             a[i][j]=num++;
24         }
25         k++;
26     }
27     return a;
28     }
29 };

 数组总结

代码随想录 (programmercarl.com)

 

标签:数组,nums,int,part02,DAY2,vector,result,https,com
From: https://www.cnblogs.com/xzdmzrc221202/p/18309653

相关文章

  • 前端开发数组去重方法
    使用原生JavaScript方法1. filter() 方法配合 indexOf()constuniqueArray=array.filter((item,index,self)=>{returnself.indexOf(item)===index;});该方法利用 filter() 遍历数组,对于每个元素,通过 indexOf() 查找其在原数组中的第一个索引。如果当前......
  • 双栈:数组实现
    双栈:数组实现结构描述:#include<iostream>#include<cstdlib>#defineMAX100usingnamespacestd;typedefintDataType;classDoubleStack{public:DataType*A;//两个栈的栈顶intTP;intTB;//建立一个空栈voidInit();//判空、......
  • 栈:数组实现
    栈:数组实现结构描述:#defineMAX100typedefintDataType;classSeqStack{public:DataType*A;intTop;voidInit();voidPush(DataTypeX);voidPop();DataTypeGetTop();voidMakeEmpty();boolIsEmpty();boolIsFull()......
  • C++ 返回数组指针简单测试
    C++返回数组指针简单测试:#include<iostream>staticconstsize_tARR_SIZE=10;staticintarr[ARR_SIZE];//更新数组#defineUPDATE_ARR_DATA(i)for(size_tj=0;j<ARR_SIZE;++j)\{\a......
  • C 语言实例 - 数组拆分与合并
    将一个数组拆分为两个数组,一个为奇数数组,一个为偶数数组实例#include<stdio.h>intmain(){intarray[10]={0,1,2,3,4,5,6,7,8,9};inteven[10],odd[10];intloop,e,d;e=d=0;for(loop=0;loop<10;loop++){......
  • day2 双指针与滑动窗口
    任务977.有序数组的平方给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。思路由于平方后最大值只可能出现在左右两边,所以每次取左右两边的较大值加入到新数组的尾部。故采用双指针法,一个指向尾部,一个指向头部,每次取符合条件......
  • Python数据可视化之numpy的11个常用的创建数组的函数
    numpy库在处理成千上万的数据时,Python的1维列表已经不适合来对数据进行处理,效率会很慢,所以numpy就诞生了,他可以将列表变成数组,而数组可以是1维、2维、3维甚至更高纬度,可用于存储和处理大型的矩阵,此外numpy提供了大量的数学函数,包括数学、逻辑、形态操作、排序、选择,输出和......
  • 获取数组中出现最多的元素
    1、方法一:需要三次循环,缺点:大量的循环操作会消耗大量的计算资源、代码多   constarr=['a','c','b','1','9','b','sdf','6','b','aaaa','汉字','汉字','sdf......
  • 提升PHP并行处理效率:深入解析数组排序算法及优化策略
    本文由ChatMoney团队出品在PHP开发中,数组排序是一个常见的操作。随着互联网技术的不断发展,对数据处理速度和效率的要求越来越高,如何在保证排序质量的同时提高处理速度成为了一个值得探讨的问题。本文将分析PHP数组排序算法对并行处理的影响,并提供一些优化建议。一、PHP......
  • PHP 数组排序算法对并行处理的影响
    本文由ChatMoney团队出品在PHP开发中,数组排序是一个常见的操作。随着互联网技术的不断发展,对数据处理速度和效率的要求越来越高,如何在保证排序质量的同时提高处理速度成为了一个值得探讨的问题。本文将分析PHP数组排序算法对并行处理的影响,并提供一些优化建议。一、PHP......