【Tip】那些“想当然”的记录
算法类
1、int越界问题
首先,Java的int取值范围是[-2^31, 2^31-1]
看清了,指数是31
今天遇到一道题:Tom数
刚刚拿到题的时候,我还注意到了,题中说的最大值是2^32,我想当然的认为,这题既然强调了范围的上界,那就肯定不会越界啊。
结果提交的时候,总是不能通过,为此浪费了我大概1h时间…
当时怎么就没想当然成:“既然强调了范围的上界,那就肯定越界呢?”[/捂脸哭]
2、绝对值排序问题
记得我刚刚接触数据结构的时候,认为排序很神奇;
后来学完排序后,认为排序很简单;
今天过后,再次认为排序很神奇,简单之中有神奇。
这或许就是王国维说的三种境界吧。
比如今天这道题:绝对值排序
我们练过所以数据都是正数的排序,练过所有数据都是负数的排序,练过有正数有负数的排序。
突然来一道,拿负数当正数使的绝对值排序就乱了手脚。由于我最近几天对Java集合使用的着迷,想当然就想使用集合的特性,其实是自己懒得写那几行排序代码了。最终由于集合使用不熟练而阵亡。
为此我专门写了一篇文章《【算法】绝对值排序·手写排序》
还有就是我曾在kotlin中使用过SortedMap,然后我就想当然的认为两个月前写过的代码,两个月没看,依旧能写出来;然而事实并没有写出来。
明天再写篇文章吧:《【算法】绝对值排序·集合排序》