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

2023-12-29 16:30:33

刷题建议

刷题建议与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

自己看到题目的第一想法

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

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

今日收获,记录一下自己的学习时长

文章来源:https://blog.csdn.net/m0_46266264/article/details/135283542
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。