快捷搜索:  汽车  科技

至今无人解得出来的题(力扣上那些让人虎躯一震的题解)

至今无人解得出来的题(力扣上那些让人虎躯一震的题解)精妙算法:使用 Manacher 和 KMP, Manacher 算法是求最长回文子串中非常漂亮的算法了。常规做法:常规思路是使用动归解决(大家的讨论也都是围绕 DP 进行的),但是如果你了解一个定理:四平方和定理:任一个正整数都能拆成四个整数的平方和;//详见2016年蓝桥杯省赛真题《四平方和》,这个问题就可以很快解决,速度快得超群。常规思路是进行二分查找,此时就能看到一个奇妙的解法,代码如下:基本思路就是从矩阵第一行最右侧开始查找,当前值比 target 大往左走,比 target 小的话往下走。

至今无人解得出来的题(力扣上那些让人虎躯一震的题解)(1)

力扣(LeetCode)的题库在众多程序员中一直拥有良好口碑,题库内的编程练习题很多是从实际业务中抽象出来的,无论是求职找工作刷算法题,还是 ACM 的同学希望得到一些专项的练习,亦或是对于算法书籍的一些实际操作,都可以在平台上得到收获。

题,对应有题解,有的题解运行速度快,构思巧妙,有的题解循环次数太多,运行速度慢,本文列举了一些让人 "虎躯一震" 的题解,以飨读者,帮助大家发现算法和题解中意想不到的美。

136. 只出现一次的数字

至今无人解得出来的题(力扣上那些让人虎躯一震的题解)(2)

放在最开头的这道题对于我来说印象非常深刻,一个想法是放一个 Hash Table,每个出现的数字就放在桶里面,每次出现就统计,代码如下:

至今无人解得出来的题(力扣上那些让人虎躯一震的题解)(3)

但是这样子做的话想法就太常规了,神奇的做法如下(使用 XOR):

至今无人解得出来的题(力扣上那些让人虎躯一震的题解)(4)

279. 完全平方数

至今无人解得出来的题(力扣上那些让人虎躯一震的题解)(5)

常规思路是使用动归解决(大家的讨论也都是围绕 DP 进行的),但是如果你了解一个定理:四平方和定理:任一个正整数都能拆成四个整数的平方和;//详见2016年蓝桥杯省赛真题《四平方和》,这个问题就可以很快解决,速度快得超群。

240. 搜索二维矩阵 II

至今无人解得出来的题(力扣上那些让人虎躯一震的题解)(6)

常规思路是进行二分查找,此时就能看到一个奇妙的解法,代码如下:

至今无人解得出来的题(力扣上那些让人虎躯一震的题解)(7)

基本思路就是从矩阵第一行最右侧开始查找,当前值比 target 大往左走,比 target 小的话往下走。

214. 最短回文串

至今无人解得出来的题(力扣上那些让人虎躯一震的题解)(8)

常规做法:

至今无人解得出来的题(力扣上那些让人虎躯一震的题解)(9)

精妙算法:使用 Manacher 和 KMP, Manacher 算法是求最长回文子串中非常漂亮的算法了。

本题目可以转换为求给定字符串从首字母开始的最长回文子串(然后将余下的 reverse,insert 到头部就可以),而求从首字母开始的最长回文子串,可以用 Manacher 算法,也可以将 str 反转以后拼接到 str 尾部,使用 KMP 的求 next 数组,这样 next 数组最后一个值就是从首字母出发的最长回文子串长度。

希望本篇文章对大家解题有帮助,如有更好的题解欢迎在评论中分享交流~

至今无人解得出来的题(力扣上那些让人虎躯一震的题解)(10)

本文作者:Nova

声明:本文归 “力扣” 版权所有,如需转载请联系。

猜您喜欢: