首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
每日一题
李有魏来
创建于2022-06-09
订阅专栏
每日一题,记录成长,记录思路。
等 2 人订阅
共64篇文章
创建于2022-06-09
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
环形链表[快慢指针 & 入环点]
对于环问题,快慢指针是一种常用的手段。一步两步走,通过判定是否相遇来判定是否存在环。而且快慢指针还能轻松的求到入环点。
交错字符串[dfs -> 动态规划 -> 状态压缩]
对于匹配问题,常见可以进行dfs暴力匹配,空间复杂度虽小,但是时间复杂度指数级。常见的优化方式就是用动规来进行时空复杂度的中和。而动规的状态转移比较单一时(非for去转移),可用滚动数组进行优化。
原子的数量[括号匹配问题]
括号匹配问题,采用栈/递归来解决,定义全局变量idx,访问完整个字符串。掌握了这个基本功,才能在此基础上做一些复杂的事。
课程表[拓扑排序]
给定一些边信息,要得到拓扑排序,得学会把图的物理结构做出来,再进行层序遍历。需熟练掌握邻接表的构建和图的遍历。
组合[回溯+剪枝过程]
通过变量引用 + 回撤操作 = 回溯,回溯一般都伴随剪枝过程,剪掉一些不必要的路径。除此之外,还有优化的可能,比如一个数组中选择和小于k的,将数组排序 + 剪枝可降低递归栈深度。
构建乘积数组[前后缀&优化]
前后缀是一种典型的空间换时间的做法,通过记录每个位置的状态来达到减少计算,而且当有前后遍历时,还可以用变量替代数组,因为前后缀是滚动的,就像是动态规划一样。
前K个高频元素[小根堆和大根堆的使用]
当题目需要有序性时,果断排序,可二分快速寻找答案,或是利用有序性快速判定,如双指针等等。除此之外,小根堆和大根堆是取K个的利器,原型基于树状数组--堆结构。
分割回文串 II[动规典中典]
动态规划就像贪心一样,高质量考察逻辑分析和问题分解的能力。但动态规划却比贪心更明确一点,将大问题拆解成规模更小性质相同的小问题进行递推中,找到状态 & 状态转移。
供暖器[看问题角度 + 二分 + 双指针]
紧密关联有序 + 找元素 + 二分,能够降低时间复杂度,甚至是解题。多练题,找到题感才能找到看问题的角度,对细节的处理也会更加得心应手,而不是死知识点,见招拆招的能力会更强。
下一个排列[发挥主观能动性发现规律]
充分发挥主观能动性,找到题的个性所在,挖掘其特点,见招拆招,没有死板的套路,需要什么就用代码的分支/循环/递归/数据结构来完成即可。
Java float保留n位小数做法
对于Java float的结果想要保留一定的位数,而且需要四舍五入时,可以采用Math.round()处理,该方法是直接返回整数。还可以用DecimalFormat类,或者BigDecimal类。
重构字符串[贪心 & 桶思想]
重构字符串,使相邻字符是不同的字符。可DFS再判断相邻字符是否为不同字符,但太无脑。可加入贪心/桶等思想,让时间复杂度大大降低。
卖股票的最佳时机II[贪心 || 动态规划]
卖股票的最佳时机,我们可以看其全貌进行股票交易,不会说错过了昨天今天就不能操作了,可采用贪心进行假买假卖。这也是经典的动态规划练习题。
卖股票的最佳时机[哨兵机制 || 动态规划]
动态规划第一要点抓住所以抽象状态,定位结果属于那个状态 & 状态之间的转移关系。动态规划重点还是把大问题划分成相同性质但规模更小的之问题。
回文对[枚举字符串前后缀 & 字典树索引 || 哈希索引]
复杂的算法题往往需要前置的主干的个性特点分析&问题拆解,然后再选择合适的数据结构,匹配合适的算法思想。
可被3整除的最大和[贪心 || 动态规划]
往往贪心可以体现在状态转移过程中的max()/min(),当然也可以直接贪心求解。可被3整除的最大和同时考察贪心 & 动态规划。
字符串乘法[模拟乘法&加法]
字符串乘法,也即大数相乘,为一道模拟题。此题既考察如何模拟乘?同时考察如何模拟大数加法?除此之外,大数的高位/低位在左边还是右边,这是里面的一处细节,可以延申出很多bug。
3的幂[递归/循环 || 公约数]
3的幂,可不断除3来判定一个数是否为3的幂,有两种方式,一种递归判定,没有循环结构,代码简单&速度稍快,就是需要函数栈的内存开销;而递归的方式稍慢,但是代码容易理解 & 没有函数栈的内存开销。
132模式[TreeMap的特点和用法 & 单调栈实践]
TreeMap不同于优先队列,TreeMap删除元素O(logn),而且能寻找target值,或者它的floor/ceiling,TreeMap以Key进行排序。对于单调栈的使用很简单,但是要将问题转
二叉树的序列化与反序列化[前序遍历+回溯]
对于树的序列化和反序列化,用什么遍历序列化,就用什么遍历把其还原出来,本文记录前序遍历序列化,采用回溯+模拟树左右递归来生成树。
下一页