高手问答第 279 期 —— 探讨算法与数据结构

OSC哒哒 发布于 03/14 19:04
阅读 5K+
收藏 8

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

算法是无数计算机先贤们的智慧结晶。当我们遇到生活中几乎无解的问题时,如果能利用相关算法,通过几行代码就可以轻松求出结果,那一刻将会感受到算法的美妙与神奇。

如果说编程的内功是什么,那么一定是算法。但是刚开始学习数据结构与算法,或者在力扣(LeetCode)上刷题的读者都有这种困惑——从何学起,先学什么,再学什么。很多人刷题的效率低,主要体现在以下三点:

  • 难以寻找适合自己的题目。
  • 找到了不合适现阶段做的题目,结果发现毫无头绪。
  • 没有全套的优质题解可以参考。

OSCHINA本期高手问答( 3 月 15 日- 3 月 21 日) 我们请来了孙秀洋 @代码随想录 和大家一起探讨关于算法与数据结构相关的问题。

可讨论的问题包括但不限于:

1.程序员面试技巧

2.如何循序渐进的学习算法

3.如何找到正确的刷题方法

4.如何不陷入‘一看就会,一写就废’的怪圈

5.程序员必须要掌握的算法有哪些

或者其它关于算法、编程、数据结构的相关问题,也欢迎大家积极提问!

嘉宾介绍:

孙秀洋(@程序员Carl)

哈尔滨工业大学计算机科学与技术专业硕士,先后在腾讯和百度从事技术研发,对数据结构与算法有深刻理解,擅长将一个个算法串联在一起并用通俗易懂的方式讲解出来。

 

为了鼓励踊跃提问,@博文视点 会在问答结束后从提问者中抽取 5 名幸运会员赠予《代码随想录——跟着Carl学算法》一书。

京东购买链接https://item.jd.com/13528516.html

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就数据结构与算法关问题向@代码随想录 提问,请直接回帖提问。

加载中
-1
OSC哒哒
OSC哒哒

高手问答第 279 期 —— 探讨算法与数据结构
@程思  @OSC_AgVDms  @osc_70745556  @empireghost   @贺小皮蛋

恭喜以上五位网友分别获得 《代码随想录——跟着Carl学算法》书籍一本 

请于4月21日前登陆账号, 私信  @小白兔爱吃大灰狼   告知快递信息(格式:姓名+电话+地址)

可莉大魔王
可莉大魔王
那么多人参加,为什么每次都有贺小皮蛋呢,
0
西夏一品堂
西夏一品堂

@代码随想录

现在互联网的开发大部分都是微服务,都是基于WEB的CRUD,在这类系统中,用的比较多的算法有哪些?

j
jet_
排序肯定有了。
0
OSC_AgVDms
OSC_AgVDms

@代码随想录 你好 有什么推荐刷题方式吗? 打算用半年时间 每天半小时这样 来刷算法,提升编程能力(ps:想通过scala 来刷题,7年程序猿)。 目前思路是 日常手机 LeetCode 加周末看看 算法相关的书(算法之美,图解算法,普林斯顿微积分读本)。 你这有推荐的资源或者书籍或者经验吗?

j
jet_
推荐文章里的这本书呀。<代码随想录>。
0
赤脚小子
赤脚小子

@代码随想录 你好,lc过100了,但是始终处于像你说的‘一看就会,一写就废’的状态。

比起有模版的二叉树各种遍历,dp是始终绕不过去的坎,明明知道那里有状态转移方程式,结果每次要么方向(从头开始还是从尾开始)跟题解不一样,要么方向对了又哪哪哪错了,很难得到正确方程式,自然这道题就算g了。

迫切想知道如何提升这个能力?至少不想错在一开始走都走不下去的地步。

难道每次都要用递归暴力写出一版,然后再优化成dp的形式?

0
osc_70745556
osc_70745556

@代码随想录 老师您好,我想咨询一下几个小白问题:

1、算法是不是更注重的是解决问题的思路和方法?就像由数字1到得出数字100,不管是每次累加1加到100还是先加再乘或者其他混合运算,最终都可以得到100,区别在于过程和效率?

2、看过有些网课,即便该课程不是讲的c++,但是老师提到算法的时候往往会用c++举例和演示,是不是c或者c++才是能够体现算法优劣的最好选择?

3、如果想在算法领域有更深刻的理解和运用,其他javascript或者python是不是只是作为算法入门学习的语言,最终的深入理解和运用还是要用C语言来进行?

0
代码随想录
代码随想录

引用来自“赤脚小子”的评论

@代码随想录 你好,lc过100了,但是始终处于像你说的‘一看就会,一写就废’的状态。

比起有模版的二叉树各种遍历,dp是始终绕不过去的坎,明明知道那里有状态转移方程式,结果每次要么方向(从头开始还是从尾开始)跟题解不一样,要么方向对了又哪哪哪错了,很难得到正确方程式,自然这道题就算g了。

迫切想知道如何提升这个能力?至少不想错在一开始走都走不下去的地步。

难道每次都要用递归暴力写出一版,然后再优化成dp的形式?

这是第一遍刷题,大家会有的感觉。相信你二刷代码随想录,你就会有自己的思路了,各个专题的套路也会清晰很多。可以看看这里录友二刷的心得:https://mp.weixin.qq.com/s/HYrKRNwfGdfeBoNQfenHpA

0
Li_Peng
Li_Peng

@代码随想录 您好,我有个困惑,很多数据结构与算法的书更关注代码本身,而像开源软件的源码解析这种,更关注线程安全、类型安全和设计模式。对一个不考虑面试,单纯想提升coding能力的程序员来说,从哪种入手更好一些呢?

0
empireghost
empireghost

@代码随想录   

1.如何循序渐进的学习算法?

2.程序员必须要掌握的算法有哪些?

看起来只有面试的时候会考到算法, 日常工作使用算法的场景相对比较少

0
程思
程思

@代码随想录 现在越来越多的算法基于AI,依赖数据,不再依赖与算法的精巧设计,请问你对AI算法和传统算法的关系如何看?

0
代码随想录
代码随想录

引用来自“程思”的评论

@代码随想录 现在越来越多的算法基于AI,依赖数据,不再依赖与算法的精巧设计,请问你对AI算法和传统算法的关系如何看?

这其实是两个维度了,AI算法已经是比较上层的了,模型,框架基本大家都差不多,最终比的是 谁对固定场景下 业务特征理解的更到位。 

基础算法,还是比较底层的,绝大多数程序员的工作中,其实都用不上基础算法。 但需要理解它,才能写出更高效的代码。

程思
程思
在线解答啊,速度太快了,哈哈。非常感谢。 主要有时候又想研究点算法,又不确定是否真的后面能用到很多,觉得如果花太多时间精力是否划算。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部