Description
一个月时间过得很快啊, 300题是做不完但是我会继续做题和REVIEW的。
-以前小弟也有做开LEETCODE的题, 希望能刷到比赛的排名, 但一直不得其法, 如泥牛入海。幸好现在总算掌握了练习方法, 以后学习新事物时也能通用。
-开始时同组的组员也遇到相同的困惑: 就是如何思考出解题法。我认为当遇到困惑时可有几种思路:
-
试试用人手模拟出算法的过程, 如LEETCODE_24 题 (https://leetcode-cn.com/problems/swap-nodes-in-pairs), 可以在纸上画一下手工是怎样做, 然后再把过程变成代码。
(代码可参考这位同学的方法二: https://github.com/liangcha/algorithm/blob/master/Week_01/id_20/LeetCode_24_20.java) -
如想不出人手解法, 就试试用计算机的方法思考(非人脑的想法), 具体就是用递归, 分治, DP 等手段, 因为这想法不自然, 难上手, 所以多同学都不使用, 但这是计算机解题必用手段。如上题是可用递归相处理的: (代码可参考这位同学的方法三: https://github.com/liangcha/algorithm/blob/master/Week_01/id_20/LeetCode_24_20.java)
-
如再想不出该怎样? 可放松心情, 用A.新手角度看问题和B.老手角度看问题:
A. 很多看似覆杂的问题, 往往用简单直接的方法可以解到。唉呀!怎么我想不出这么简单漂亮的方法! 我看到解答时经常都会这样叹气。想不出是因为我学了太多算法技巧, 反易忽略了基本原似的想法 ( 独孤九剑不是教令狐冲忘记所有剑招, 见招拆招吗?)
B. 老手思考模式就当然是运用各种利害的技巧了, 想像现在手上有很多工具, 逐个试试看能否帮助解题。例如很多字串括号问题我都无从入手, 但是我回顾我在线下2天学了什么技巧: 第一天早上学了很多数据结构: 伫列和数组好像也没有, 但堆叠好像可以啊, 便试试看~ 果然OK!