Day02 模拟(概念篇)

112 阅读2分钟

《算法零基础》模拟

前言

​ 模拟算法其实就是根据题目做,题目要求什么,就做什么。一些复杂的模拟题其实还是把一些简单的操作组合了一下,所以模拟题是最锻炼耐心的,也是训练编码能力的最好的暴力算法。

一、数据结构

​ 对于模拟题而言,最关键的其实是数据结构,看到一个问题,选择合适的数据结构,然后根据问题来实现对应的功能。模拟题的常见数据结构主要就是:数组、字符串、矩阵、链表、二叉树 等等。

1、基于数组

​ 利用数组的数据结构,根据题目要求,去实现算法,如:1920.基于排列构建数组1389.按既定顺序创建目标数组1603.设计停车系统2149.按符号重排数组2221.数组的三角和

2、基于字符串

​ 利用字符串的数据结构,根据题目要求,去实现算法,如:2011.执行操作后的变量值2744.最大字符串配对数目LCP 17.速算机器人537.复数乘法

3、基于链表

​ 利用链表的数据结构,根据题目要求,去实现算法,如:2181.合并零之间的节点1823.找出游戏的获胜者

4、基于矩阵

​ 利用矩阵的数据结构,根据题目要求,去实现算法,如:2120.执行所有后缀指令1252.奇数值单元格的数目832.翻转图像657.机器人能否返回原点289.生命游戏59.螺旋矩阵 II885.螺旋矩阵 III

5、基于栈

​ 利用栈的数据结构,如:1441.用栈操作构建数组

6、基于队列

​ 利用队列的数据结构,如:1700.无法吃午餐的学生数量

二、算法技巧

​ 模拟时一般会用到一些算法技巧,或者说混合算法,比如 排序、递归、迭代 等等。

1、排序

​ 排序后,干一件事情,如:950.按递增顺序显示卡牌

2、递归

​ 需要借助递归来实现,如:1688.比赛中的配对次数2169.得到 0 的操作数258.各位相加

3、迭代

​ 不断迭代求解,其实就是利用 while 循环来实现功能,如:1860.增长的内存泄露258.各位相加