首页 > 其他分享 >代码随想录DAY2|有序数组的平方|长度最小的子数组|螺旋矩阵II

代码随想录DAY2|有序数组的平方|长度最小的子数组|螺旋矩阵II

时间:2024-06-23 19:53:49浏览次数:3  
标签:下标 DAY2 矩阵 II 数组 转向 随想录 指针

有序数组的平方

有序数组的平方

解题思路

最优的解法是通过双指针,由于该数组是一个非递减数列,我们只需要将数组的首尾两端作为两个指针的起始位置,然后进行比较就行。具体地讲,双指针所指向的值相互比较,把较大的值放入新的数组的开通,然后该指针往前(如果是在首端的指针,则往后)。重复这个过程直到双指针重合,别忘了重合的时候把指针指向的值放入数组。

知识点

双指针

心得

一开始做这道题的时候没看清是有序非递减数列,直接用暴力法解决。以后当遇到这种有序的比大小的题,可以尝试用双指针进行处理。

长度最小的子数组

长度最小的子数组

解题思路

使用滑动窗口来解决,这个是用了一个非常巧妙的方法,由于我们要找一个长度最小的子数组,我们只需要控制两个指针作为一个窗口的头和尾,然后通过窗口内所有值的和与目标值进行比较来移动两个窗口,最后得到子数组。如果窗口内所有值的和大于目标值,则头指针移动,而尾指针保持每次往右移动一格即可。

知识点

滑动窗口,双指针

心得

这个题目有想到用双指针,但是没有捋清楚中间的逻辑。看了题解之后才知道具体该怎么写。

螺旋矩阵II

螺旋矩阵II

解题思路

题目中的螺旋矩阵是有规律的,重点的是每次矩阵转向的时候的下标需要确定,你会发现除了第一次转向时的下标和矩阵的维数n相同,每两次数组转向的时候,当前转向的下标和下次转向时的下标的距离会少1。举个例子,一个3维矩阵,它第一次转向的时候的下标为2(0,1,2,有三个),第二次转向时候的下标为4(3,4,有两个),第三次转向的时候下标为6(5,6,有两个),第四次转向的时候下标为7(一个),第五次转向的时候下标为8(一个)。所以我在一个循环内解决了这个问题。

知识点

数组,矩阵

心得

找出逻辑后,难点就在于实现了,废了我一个小时修好了bug。

总计时长 5h

标签:下标,DAY2,矩阵,II,数组,转向,随想录,指针
From: https://www.cnblogs.com/TKK-YLF/p/18263543

相关文章

  • 科学计算库Numpy库(2.数组之间的运算)
    文章目录前言一、数组运算二、数组广播三.数组与标量间的运算总结前言Numpy数组不需要遍历循环,即可对每个元素执行批量的算术运算操作,这个过程叫做矢量化运算。不过。如果两个数组的大小(ndarray.shape)不同,则它们进行算术运算时会出现广播机制。除此之外,数组......
  • Day28.property使用part2
    1.property使用part2_多次调用类中的函数方法property用法,案例一代码如下:'''案例一'''classPeople:def__init__(self,name):self.__name=namedefget_name(self):returnself.__namedefset_name(self,val):......
  • LeetCode 209.长度最小的子数组
    链接209.长度最小的子数组-力扣(LeetCode)题目给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 子数组[numsl,numsl+1,...,numsr-1,numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示......
  • 12-数组
    数组的概述相同类型数据的有序集合按照一定的先后次序排序组合而成每个数组元素可以通过一个下标来访问它们数组一旦被创建,它的大小就不可改变数组中的元素可以是任何数据类型,包括基本类型和引用类型数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象......
  • NumPy数组的分割
    NumPy数组的分割方法说明split()分割数组hsplit()沿横轴分割数组vsplit()沿纵轴分割数组1.split()np.split(arr,整数或数组,axis=n)(1)整数importnumpyasnparr=np.arange(10)res=np.split(arr,5)print("arr:")print(arr)print("res:")p......
  • LeetCode 448. 找到所有数组中消失的数字(哈希表)
    448.找到所有数组中消失的数字思路:方法一,借助额外的0(n)空间sta进行哈希classSolution{public:vector<int>findDisappearedNumbers(vector<int>&nums){intn=nums.size();vector<int>sta(n,0);for(inti=0;i<n;i++){......
  • 代码随想录算法训练营第18天 | 、98验证二叉树、700. 二叉搜索树中的搜索
    代码随想录算法训练营第20天|654.最大二叉树https://leetcode.cn/problems/maximum-binary-tree/654.最大二叉树代码随想录https://programmercarl.com/0654.最大二叉树.html617.合并二叉树https://leetcode.cn/problems/merge-two-binary-trees/description/617.合并二......
  • 代码随想录63——二叉树4——迭代遍历
    ......
  • 数组元素的数量
    在数组初始化时,我们不希望将数组大小写死,后续可能会有修改,那么对于未指定大小的数组,如何计算其元素个数?思路:已知数组名代表整个数组的物理大小,数组内单个元素代表数组的一个单元物理大小,假设数组物理空间是100,单个元素物理空间是5,那么该数组一共有20个元素。array_element_numbe......
  • 力扣-1630. 等差子数组
    1.题目介绍题目地址(1630.等差子数组-力扣(LeetCode))https://leetcode.cn/problems/arithmetic-subarrays/题目描述如果一个数列由至少两个元素组成,且每两个连续元素之间的差值都相同,那么这个序列就是等差数列。更正式地,数列s是等差数列,只需要满足:对于每个有效的i,s[i......