首页 > 编程语言 >算法训练营第二天| 209.长度最小的子数组、59.螺旋矩阵II

算法训练营第二天| 209.长度最小的子数组、59.螺旋矩阵II

时间:2024-09-28 16:49:35浏览次数:3  
标签:total 59 209 之后 然后 II 需要 移动 指针

209.长度最小的子数组

状态:没写出来 ->确认自己的想法是对的之后写出来了!!!

初始思路:因为子数组是连续的,所以可以采用滑动窗口,我把这个窗口设置为左闭右闭,所以初始左右边界为0。之后先移动右指针,使得找到第一个和大于等于target的子数组,记录其长度,之后再移动左指针一位,再找第二个......以此类推。

看完题目分析之后:我的思路是对的,就是代码没写出来,再去试试。

存在问题:

1.首先就是思维混乱,不知道怎么处理只有一个元素的指针移动问题:最后我自己的解决办法是在移动左指针之后,判断一下是不是大于了右指针,如果大于了右指针就代表上一次只有一个元素,所以特殊处理也移动右指针。

2.然后还有问题就是我不知道在循环中应该怎么处理移动左指针之后,先不移动右指针,先判断当前区间内的是否符合要求。为什么很难呢,因为每一次判断完当前情况之后,对于更新total有两种选择:第一种需要移动指针,然后for判断条件,然后total加新的数;第二种就是移动指针,然后加total加新的数,然后for判断条件;因为有可能移动指针之后发生越界,所以我必须选择第一种方式,所以导致我会重复加一次右指针数:最后我自己的解决办法是移动左指针之后,就把total减去左右指针的数,然后不移动右指针,之后再判断条件,再把右指针的数加回来。

3.最后就是我认为不同的情况对于左右指针的移动很不一样,有时候需要只移动左指针,有时候需要移动右指针,有时候需要移动左指针和右指针,我不知道该怎么写这个for循环:最后我不在for中更新左右指针,而是在不同情况下进行不一样的更新。我认为这一点很重要。

看完视频讲解的代码之后,我发现关于123点,完全不需要这么麻烦,只要在判断total>=target的时候用while,一切就迎刃而解,也就可以在for中更新右指针了

59.螺旋矩阵II

状态:之前刷题的时候做过这道题,但是当时似懂非懂,于是直接看视频讲解。

初始思路:我知道大概思路是定义从左到右、从上到下,从右到左,从下到上四个,然后不知道了。

看完视频之后:首先,确定整体思路:一圈一圈填充,采用左闭右开,那么所需要解决的问题就是填充的元素xy坐标是什么。为了解决这个问题,首先明确需要多少圈,然后引入startx,starty来确定每一圈开始的位置,offset非常巧妙,用来定义偏移。然后也很特别的一点是ij只需要在每圈最开始的时候用startxy赋值,我认为这样非常清晰。之后就是需要明确在过程中ij一直移动,不需要考虑重新赋值。还有很重要的一点是,从下往上和从右往左都是和边界比较,而不是偏移量

然后记住这个:

matrix = [[0 for _ in range(n)] for _ in range(n)]

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

 拓展题目:卡码网  | 58. 区间和(第九期模拟笔试)44. 开发商购买土地(第五期模拟笔试)

58.区间和

用到前缀和,挺重要的概念,acm模式很顶。

44. 开发商购买土地

未完成

标签:total,59,209,之后,然后,II,需要,移动,指针
From: https://blog.csdn.net/xiaotaoooo/article/details/142560732

相关文章

  • 8592 KMP算法
    首先,我们需要理解KMP算法的基本思想。KMP算法是一种改进的字符串匹配算法,它的主要思想是利用已经部分匹配的这个有效信息,使得后续的匹配中,尽量减少字符串的回溯,提高匹配效率。KMP算法的关键在于通过一个next数组,保存模式串中前后缀的最长的共有元素的长度。当模式串中的字符......
  • 代码随想录算法训练营第二天| 209.长度最小的子数组、59.螺旋矩阵II 、区间和、开发
    209.长度最小的子数组此题注重理解,同时我将res一开始初始化为sums的长度加一(因为不可能为此长度)INT32_MAX是一个常量,代表32位有符号整数的最大值classSolution{public:intminSubArrayLen(inttarget,vector<int>&nums){inti=0,j=0;//i为起始位置,j为......
  • 力扣 中等 92.反转链表 II
    文章目录题目介绍题解题目介绍题解classSolution{publicListNodereverseBetween(ListNodehead,intleft,intright){//创建一个哑节点,它的next指向头节点,方便处理ListNodedummy=newListNode(0,head);//p0用于......
  • 物联网系统中基于IIC通信的数字温度传感器测温方案
    01物联网系统中为什么要使用数字式温度传感器芯片物联网系统中使用数字式温度传感器芯片的原因主要有以下几点:高精度与稳定性高精度测量:数字式温度传感器芯片,如DS18B20,采用芯片集成技术,能够有效抑制外界不同程度的干扰,从而提供高精度的温度测量。这对于物联网系统来说至关......
  • Leetcode 154. 寻找旋转排序数组中的最小值 II
    1.题目基本信息1.1.题目描述已知一个长度为n的数组,预先按照升序排列,经由1到n次旋转后,得到输入数组。例如,原数组nums=[0,1,4,4,5,6,7]在变化后可能得到:若旋转4次,则可以得到[4,5,6,7,0,1,4]若旋转7次,则可以得到[0,1,4,4,5,6,7]注意,数组[a[0],a[1],a[2],......
  • P2090 数字对
    P2090数字对不是,这不是黄题吗,鉴定为我太菜了考虑这东西长得像辗转相除法。最终结果一定是\((n,B)\)这样子的。那么它一定是由\((n-B,B)\)转移过来。对于\((a,b)\)如果\(a>b\)它会变成\((a-b,b)\),否则是\((a,b-a)\)。于是也许我们可以枚举\(B\),把\(a-b\)这个操作......
  • CF1592F2-Alice and Recoloring 2-分析、二分图
    link:https://codeforces.com/contest/1592/problem/F2题意:给定一个\(n\)行\(m\)列的目标矩阵,矩阵元素只有W或B,并且你有一个初始矩阵,元素全为W。现在你可以矩阵实施以下操作:使用一块钱,选定一个包含\((1,1)\)的子矩阵,把矩阵中的元素全部反转(W变B,B变W)。使用......
  • Windows Server 2019 Web服务器之IIS的安装与基本配置
    准备工作:选择一台服务器作为WEB-IIS服务器在WindowsServer2019系统中,IIS角色是可选组件,默认情况下是没有安装的。1.在windows服务器中安装IIS1)打开【服务器管理器】,单击【添加角色和功能】。2)默认选择【基于角色或基于功能的安装】,点击【下一步】。3)默认选项,继续下一步。......
  • 2024.9.25 Python,单词替换,优美的排列 II,sort的用法前K个高频单词,广度优先搜索腐烂的橘
    1.单词替换在英语中,我们有一个叫做词根(root)的概念,可以词根后面添加其他一些词组成另一个较长的单词——我们称这个词为衍生词(derivative)。例如,词根help,跟随着继承词“ful”,可以形成新的单词“helpful”。现在,给定一个由许多词根组成的词典dictionary和......
  • 分析基础 II
    我突然意识到也许知道上极限和下极限再来血这个会容易一点。QwQ符号约定\(\mathbb{N,Z,Q,R}\)在之前已经构造了,应该不存在问题。\(\logn\)表示\(n\)取自然对数(也就是国内用的\(\ln\))。历史遗留问题在[[分析基础I]]中提到不同定义下的\(\mathbb{R}\)是\(\text{i......