首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
每日一题
李有魏来
创建于2022-06-09
订阅专栏
每日一题,记录成长,记录思路。
等 2 人订阅
共64篇文章
创建于2022-06-09
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
目标和 [从暴力dfs -> 状态记录 -> 动态递推 -> 状态压缩]
从最简单的dfs暴力逻辑;到利用空间记录重复计算,即记忆搜索;再到极致的空间换时间,即动态规划;最后到空间优化,即状态压缩。形成一个完整的逻辑链,一个完整的优化闭环。
不同路径 [DFS记忆化数组 & 动态规划]
DFS作为深度优先遍历,经常碰到需要一节点多次被遍历的情况,导致时间复杂度呈指数级。往往重复遍历目的就不是单词的访问节点了,而是需要该节点到某终点的一种状态(抽象),可用变量记录该节点的状态。
最长公共前缀 [分治 & 抽象二分练习]
对于一个问题,采用一题多解,才能深刻理解其考察的知识点,进行举一反三。最长公共前缀,可横向对比 / 竖向对比 / 最值对比 / 分治 / 二分方法来完成题解。
基本计算器 [括号匹配的变形]
发现括号匹配问题--求解基本表达式 / 对化学表达式的元素计数等相关问题,就像是扁平化嵌套列表一样,本质处理方式都是对树的前序遍历过程。
扁平化嵌套列表迭代器 [树的递归前序遍历 + 迭代前序遍历]
问题转换:将需求确认,结合已学知识,进行匹配->改进。列表的扁平化本质就是树的前序遍历,不过不需要父节点而已。树的前序遍历可以递归实现,也可以迭代实现。
二叉树的中序遍历 [递归 & 迭代]
中序遍历,递归进行左中右遍历,非常简单高效。迭代的方式稍显麻烦,不过也是遵循左中右遍历的原则。而在迭代方法中,将二叉树原地修改成双向循环链表,再进行遍历,则需要栈空间,就可以完成迭代版的中序遍历。
设计一个HashSet [hash函数 + 存数据的数组 + hash冲突]
hashSet拆分即hash & set,设计hash需要确定hash函数 + 存数据的数组 + hash冲突的解决办法。
最低票价 [无限定的01背包问题(面向时间型)]
动规规划和贪心都是训练逻辑思维的好题目,因为其中涉及问题抽象能力,需要将大问题准确的划分为规模更小性质相同的之问题。
根据字符出现频率排序 [尽量使用数组来实现 栈 / hash]
尽量用数组模拟栈 / hash,虽然数组也属于类级别,但是其处于JVM层面,比一般的HashMap / Stack类要快很多。
最大整除子集 [问题转换+排序+动规(面向前数组前部分)]
一般的问题转换并不是很巧秒,基本都是找到题目问题的特点,将其翻译成有规律的/更数学味的语言,从而用代码实现。除此之外,问题转换+前置+后置操作型属于经典算法考察方式了。
连续的子数组和 [巧妙问题转换]
算法题中有一类是专门应用某种定理而存在的题,是一种理解容易,想到很难,即问题转换的非常巧妙的一类题,通常称其为脑筋急转弯,全当长见识。
01背包&完全背包学习记录
背包问题是动态规划的一类,背包又分01背包 & 完全背包,各自有各自很鲜明的特点,虽同为背包,形式也很像,但是细节上很大不同。
多线程交替打印 [8种方式控制先后]
线程并发问题需要合理的控制机制,如并发交替打印,可等待与唤醒,可自旋,可阻塞自己相互解锁,阻塞队列。
丑数II [问题本质 & 优先队列 & 动规]
抓住问题本质,是解题的关键,也是举一反三的关键。丑数的本质是2x/3x/5x,可采用优先队列选择最小x,也可以动规取得当前最小丑数作为当前状态。
数据流的中位数 [双堆&桶的使用]
在不断添加元素的情况下,获取数据中的中位数,可以中一分为二,将两边分别放在大小顶堆中;也可用TreeMap进行桶排,结合中位双指针来快速获取中位数。
零钱兑换 [dfs -> 背包]
零钱兑换是一个很经典的问题,可dfs进行暴力寻找,结合一些剪枝,一般来说很容易超时。所以必须空间时间中和,采用记忆化数组记录中间节点到叶子节点过程的状态,防止重复计算;也可直接采用动规来进行递推求解。
添加与搜索单词 - 数据结构设计 [字典树的顺序实现 & 链表实现]
字典树是一种经典的索引,对于建好的字典树,O(N)内就能找到指定字符串是否存在。而树结构有两种物理实现,一种顺序表,一种链表。
距离顺序排列矩阵单元格[阅读理解->问题转换(朴素bfs)->自我进阶(priorityqueue)]
算法题的训练方面,1-提取,将核心内容提取,联系已学知识;2-问题转换,根据提取的问题个性,进行问题转换解决;3-自我进阶,将一些规则抽象,考虑解决方案。
字符串解码[括号匹配问题]
对于括号匹配问题,典型的解法就算递归进行括号匹配,当然也可以栈模拟。在此基础上才能完成额外的操作,解答任何括号匹配问题。
有序矩阵中第K小元素[优先队列PriorityQueue]
如果遇到求最短路径相关问题,而每走一步面临着n个选择方案,如果直接遍历O(n)不是想要的复杂度,则在N个元素中以O(logN)定位元素,非PriorityQueue莫属。
下一页