代码随想录算法训练营第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

刷题建议

刷题建议与debug

  1. 代码随想录目前基本都有了视频讲解,一定要先看视频,事半功倍。
  2. 写博客,将自己的感悟沉淀下来,不然会忘
  3. 大家提问的时候,记得要把问题描述清楚,自己在哪一步遇到了问题,做了哪些调试,而不要只是把代码甩出来,这样方便大家帮忙快速定位问题。

博客内容:(博客记录以及打卡格式

今日学习文章链接和视频链接

Python菜鸟教程

977 有序数组平方

自己看到题目的第一想法

  1. 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。
  2. 非递减=递增或者有相同的val
  3. 设计两个指针,一个指向所有负数,一个指向所有正数,比较两个指针的val的平方的值,谁大,就将值放到新数组,最后将新数组反转

看完代码随想录之后的想法

  1. 先想暴力破解,每个数平方之后,排个序,这个时间复杂度是 O(n + nlogn), 可以说是O(nlogn)的时间复杂度
  2. 想办法优化暴力破解–>双指针,新数组

自己实现过程中遇到哪些困难

  1. list = [float('inf')]* length 初始化列表并且将元素中每个列表设置为正无穷大,不然会报错

相关题目

209 长度最小子数组

自己看到题目的第一想法

  1. 暴力破解,双层循环,第一层i从数组第一个数到最后一个数
  2. 第二层j从i到最后一个数,j每次循环中设置一个区域变量sum=0,一直加到sum >= target,记录长度到数组,然后i继续循环
  3. 优化,双指针(滑动窗口),但是没思路。

看完代码随想录之后的想法

  1. 用一个for循环做两个for循环做的事情
  2. for循环里面的j一定指向区间终止位置,因为如果是起始位置,那么和暴力破解一样,所以用动态移动的方式移动起始位置
  3. 滑动窗口精华==》如何移动起始位置?
  4. 起始位置不变,终止位置一直向后移动,等到>=target,终止位置就不用向后移动了(数组全是正整数),此时起始位置向前移动一位,记录此时的长度
  5. 双指针是一种逻辑思路,不是真指针

自己实现过程中遇到哪些困难

代码一次OA,重要在于理解思想,代码语言和数学语言一样,只是思想的表达

59 螺旋矩阵II

自己看到题目的第一想法

  1. 完全没思路

看完代码随想录之后的想法

  1. 首先明确到底要转几圈
  2. 然后明确边界条件左闭右开还是左开右闭
  3. 每一圈的起始位置不一样,要明确
  4. 可以画个坐标轴,从左往右是y,从上往下是x
  5. n奇数时,填充矩阵中心点。
  6. 注意offset偏移量,每循环一层就要多+1

自己实现过程中遇到哪些困难

  1. 不太熟练
  2. 脑子里需要有坐标轴,做边界条件
  3. 要注意offset的增加
  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值