Leetcode 刷题记录——数组篇

本文介绍了算法基础,包括数据结构、逻辑结构、算法特性及复杂度分析,并分享了LeetCode刷题技巧,如五分钟思考法、重复刷题和写解题报告。重点讲解了数组基础,涉及数组元素访问、查找、插入等操作,以及解题时的迭代规律和边界处理。
摘要由CSDN通过智能技术生成

第一章 算法入门与数组篇

学习《Datawhale Leetcode 算法笔记》记录

一、算法基础

  1. 数据结构:计算机中的数据是以何种方式进行组织、存储的。

  2. 逻辑结构:集合结构、线性结构、树形结构、图形结构

  3. 物理结构:顺序结构、链式结构

  4. 算法:解决问题的方法,一系列运算步骤

  5. 算法的基本特性:输入、输出、有穷性、确定性、可行性

  6. 复杂度:时间复杂度(以基本操作次数作为单位)、空间复杂度(以算法的辅助空间大小作为单位)

  7. 渐进符号:渐进紧确界符号 Θ \Theta Θ,渐进上界符号 O O O,渐进下界符号 Ω \Omega Ω

  8. 空间复杂度主要包括:① 局部变量所占用的存储空间;② 系统为实现递归所使用的堆栈空间

  9. leetcode 刷题技巧:① 五分钟思考法:如果一道题如果5分钟之内有思路,就立即动手写代码解题。如果5分钟之后还没有思路,就直接去看题解。然后根据题解的思路,自己去实现代码。如果发现自己看了题解也无法实现代码,就认真阅读题解的代码,并理解代码的逻辑。② 重复刷题:遇见不会的题,多刷几遍,不断加深理解。③ 写解题报告:如果能够用简介清晰的语言让别人听懂这道题目的思路,那就说明你真正理解了这道题的解法。

二、数组基础

  1. 数组——使用了顺序存储的线性表

  2. 如何实现随机访问数组元素:通过寻址公式、基于首地址计算对应元素地址。

    寻址公式:下标 i i i对应的数据元素地址 = 数据首地址 + i i i × 单个数据元素所占内存大小。

  3. 原生 Python 中没有数组的概念,使用了类似 Java 中 ArrayList 容器类数据结构,叫做列表。列表中存储的数据类型、数据长度都可以不一致。

  4. 基本数组操作:访问(1),查找(n),插入(append 1,insert n),改(1),删(pop 无参数 1,pop 有参数 n,remove n)

  5. 完成练习题:0066 加一0724 寻找数组的中心下标0189 轮转数组048 旋转图像

  6. 未解出练习题:054 螺旋矩阵498 对角线遍历

  7. 解题回顾:数组基础的题目核心在于找到迭代规律,模拟迭代并处理好边界情况。几道简单题以及中等难度的旋转图像题能独立解出都是很好地抓住了其下标迭代的规律,可以通过在纸上推演,结合矩阵的一般迭代方式来模拟找到迭代规律。另一个难点在于较复杂规律的模拟,需要重视边界情况,全面细致,更多的是需要耐心的体力活,例如螺旋矩阵一题,找到规律并不困难,但要耐心的模拟其实是一个问题,尤其是如果笔面试碰到这类题目,在时间有限的情况下能否清晰地解出,是一个挑战。总体来说,数组基础的题目更像是数学题+体力活。

  8. 阶段总结:整体难度不大,技巧性不强,但未解出的两道模拟题需要日后回顾练习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值