【分享】如何提高编程技巧?

这是一个很有意思的问题,首先要理解什么是技巧。

什么是技巧

我举一个数学中的例子,比如:

a=(a+b)/2+(a-b)/2

b=(a+b)/2-(a-b)/2

这就是数学技巧。

你可能会问,这什么鬼?是的,技巧如果脱离了特定问题,那么它就没有意义。

所以没有哪本课本或者哪篇文档会专门讲技巧,也没有哪个老师会专门教技巧。技巧只有自己在实践中领悟,才能学会。

比如你碰到一道数学三角函数证明题,

sin(a)+sin(b)=2sin((a+b)/2)cos((a-b)/2)

完全不会吧?

640?wx_fmt=png

看下答案:

变换,

sin(a)=sin((a+b)/2+(a-b)/2)

然后展开,

sin(a)=sin((a+b)/2)cos((a-b)/2)+cos((a+b)/2)sin((a-b)/2)

同样,sin(b)也是先变换,后展开,

sin(b)=sin((a+b)/2-(a-b)/2)=sin((a+b)/2)cos((a-b)/2)-cos((a+b/2)sin((a-b)/2)

最后,两边相加就行了。

640?wx_fmt=png

那么这道题一开始到底是哪里不会呢?是三角函数不会展开?还是两个等式两边相加想不到?

都不是,恰恰是第一步的技巧变换想不到,能想到这个变换的话,后面的过程就是顺理成章的事情。

这就是技巧的应用。

编程技巧

在编程领域也有类似的技巧。

比如我们在写二分查找的时候,有一步是找到左边界和右边界的中间,很多人会这样写

mid=(low+high)/2

但是如果数据量大,low+high可能溢出,导致程序出错,如果写成

mid=(high-low)/2+low

就不会有这个问题。

这其实就是一个编程技巧,我刚毕业那会儿,曾经在一次面试中手写二分查找用到了这个技巧,被面试官指出并加以赞许。

所以同样是二分查找,这个细节的技巧处理,就让你在茫茫人海中脱颖而出。

类似的技巧还有很多,比如哨兵,比如设计模式等等。

其实在学校学设计模式也是很有感触,很多模式当时看懂了,但是因为没有实践或者没有场景,很快就会忘光。

设计模式也是一种技巧,技巧这种东西,你如果不理解它怎么运用,光记是记不住的,即使记住了也没啥用,很快就会忘。

怎么提高编程技巧

提高编程技巧没有捷径,就是平时多练习,多实践,但是要注意,实践的时候,要留意那些技巧,特意去体会,然后拿来为自己所用,这才能学会一个技巧。

很多人刷leetcode,刷完之后,编程水平并没有很大提高,为什么呢?

比如同样是一个二维数组的四方向搜索,你可能写了四个if去判断,没问题,能过。但是其他人可能是定义了一个方向数组,然后把搜索逻辑统一了,一个if都不用,代码即简洁又不易出错。

这其实就是技巧,你如果不去注意,可能一辈子都学不到。

你刷了300道题,都过了,但是你用的可能并不是最好的算法,写的也不是最简洁的代码,所以时间花出去了,收益却不高。

学编程还是要重视一些常用的技巧,很多时候,这就是你不加班的秘密武器。

大家还知道哪些编程技巧?欢迎留言进行分享。

640?wx_fmt=jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值