一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1354|回复: 18
收起左侧

[Leetcode] “把思想化作程序”这种能力要怎么练习?

[复制链接] |试试Instant~ |关注本帖
coldfire8 发表于 2016-2-23 16:47:42 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
本帖最后由 coldfire8 于 2016-2-23 16:51 编辑

刷题的过程中发现,能不能解出一道题有两个关键:
1、知道一道题的思路,特别是一些比较奇葩的题
2、能够把自己的思路顺利的转化为代码

楼主不才,写了这么多年代码(抱了这么多年大腿),突然发现自己竟然如此欠缺第2种能力!学校里上的课也从来没有针对这个的训练。。

挑个弱智的说吧,bubble sort
楼主知道,恩n个循环,每次把最大(小的)移到尾巴上去;也就是每个循环内比较相邻的两个数,如果顺序不对,就swap一下。
感觉思路很清晰啊,for循环一写起来就出错啊!!
还有quick sort之类的算法,我知道是一个pivot然后比较来比较去啊,但是一写代码就懵啊。。。
更甚者,拿到一道题楼主脑子里出现的是各种零碎的想法,而根本不是一个有顺序有逻辑的解题思路。。。唉


楼主诚恳的求问,“把思想化作程序”的能力要怎么练习?
victorsterling 发表于 2016-2-24 00:55:09 | 显示全部楼层
从抛弃自己抱的大腿开始!!

不管什么技能,只有完全靠自己的努力才能真正掌握,一直指望大腿帮你是很难真正掌握技能的!
回复 支持 3 反对 0

使用道具 举报

Zestinc 发表于 2016-2-27 06:47:22 | 显示全部楼层
1. 思路不够清晰,不知道到怎么实现
2. 代码还是打得少。(有时候知道思路还得憋一下午,也是常事,都是基本功不够,刷)

个人意见,仅供参考
回复 支持 1 反对 0

使用道具 举报

ourlord 发表于 2016-2-27 13:05:04 | 显示全部楼层
多写,多看,无他。写程序本身不是一门科学,是手艺,熟能生巧。设计架构是科学,多读书,多研究。
回复 支持 1 反对 0

使用道具 举报

wwk55551111 发表于 2016-2-23 17:09:01 | 显示全部楼层
“学校里上的课也从来没有针对这个的训练。。”
一般CS(及CS相关)专业的学生都会有实验课,就会写这些程序。
练多了,自然就知道如何用某种语言写一个算法同时避免编译错误和运行时错误
回复 支持 反对

使用道具 举报

 楼主| coldfire8 发表于 2016-2-23 17:19:00 | 显示全部楼层
wwk55551111 发表于 2016-2-23 17:09
“学校里上的课也从来没有针对这个的训练。。”
一般CS(及CS相关)专业的学生都会有实验课,就会写这些 ...

反正我们专业更多的是做一些application……感觉业务上的问题思路跟算法完全不一样
回复 支持 反对

使用道具 举报

wwk55551111 发表于 2016-2-23 17:43:29 | 显示全部楼层
coldfire8 发表于 2016-2-23 17:19
反正我们专业更多的是做一些application……感觉业务上的问题思路跟算法完全不一样

嗯,application往往没有那么复杂的非空判断,递归等东西,这些思维需要在程序中训练
回复 支持 反对

使用道具 举报

 楼主| coldfire8 发表于 2016-2-23 19:39:40 | 显示全部楼层
~~~~~~~><~~~~~~~真的没有人指点一下么……
回复 支持 反对

使用道具 举报

RightSoFar 发表于 2016-2-23 20:18:39 | 显示全部楼层
没什么诀窍。还是练的少。

高中三角函数的公式,定理,大家都懂,但是不是所有三角函数题你都会解呢?即便做错过的题,知道正确应该怎么做(就像你说的,知道了正确的思路),是不是下次就一定能写对?

回复 支持 反对

使用道具 举报

davidcao2014 发表于 2016-2-23 21:07:28 | 显示全部楼层
也想知道大神们是怎么做的
回复 支持 反对

使用道具 举报

蛀牙jj 发表于 2016-2-24 01:02:23 | 显示全部楼层
我也发现了,想起来很简单,写出来就不行了,我感觉这跟思维方式有很大关系,比如一个命题的数学证明,看起来很显而易见,如果没有训练过,转换成数学语言就比较困难了
回复 支持 反对

使用道具 举报

alen231x 发表于 2016-2-24 01:19:08 | 显示全部楼层
搞搞ACM就知道了,这都只是基本功^_^
回复 支持 反对

使用道具 举报

 楼主| coldfire8 发表于 2016-2-24 13:38:50 | 显示全部楼层
alen231x 发表于 2016-2-24 01:19
搞搞ACM就知道了,这都只是基本功^_^

是的!所以求问基本功是怎么训练的QAQ....
回复 支持 反对

使用道具 举报

find_advice 发表于 2016-2-25 09:07:35 | 显示全部楼层
可以先在纸上打打草稿,把自己的想法详细地写出来,再一步一步转化成伪代码或流程图,再敲代码。刚开始慢一点,熟练了之后会越来越快,慢慢的不需要打那么多草稿了。但是还是建议无论练到什么地步,对于比较复杂的问题在纸上简单地写写画画。
大神们请忽略我。
回复 支持 反对

使用道具 举报

jy_121 发表于 2016-2-25 09:08:42 | 显示全部楼层
关注,求有大神指点下
回复 支持 反对

使用道具 举报

zongtb 发表于 2016-2-25 20:39:35 | 显示全部楼层
我们老师也说过同样的话,先得有思想,有了思想,程序就有了
回复 支持 反对

使用道具 举报

zxu12 发表于 2016-2-27 13:25:52 | 显示全部楼层
没有诀窍,唯有多练习
回复 支持 反对

使用道具 举报

csddff 发表于 2016-2-27 17:18:06 | 显示全部楼层
不知道楼主用什么语言写,要是C++或者Java的话,建议换一种human-oriented的语言,比如python或者ruby,这种writer's block的问题相对来说会少一点
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-6 18:39

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表