想了解下大佬们在工作中用过的数据结构

2020-03-26 14:39:06 +08:00
 minglanyu

emmmmmm,说出来不怕丢人。

昨天无意间刷 leetcode,发现一道题解法很妙,发现了新世界一样;今天做另一道题的时候发现 emmmmm,不是那么简单,还是得动动脑子的。 所以又对数据结构和算法在工作中的实际用途产生了困惑。

平时大多数时间在用 Array 原型链上的forEach,map,filter等等,String 原型链,Object 原型链上的那一套,再搭配一些 es6+的Set(),...,Map这种等等。 偶尔遇到一些稍微复杂的会用 lodash 里的函数或者 for for,对服务端返回的数据做一些处理以供渲染。

我写 PC 端的前端中后台系统,就是上面这些东西组合起来用,平时工作也够用了,性能也没啥问题。 如果是操作 DOM,基本上也是调 API,然后也很少有抓耳挠腮的感觉,一点一点能把需求做出来。 框架用的也算是蛮熟,接入第三方开源库也很快,源码也阅读过一些。

学校里也学过数据结构,基本上就是一些数组,二叉树,链表之类等等(当前工作里用到最多的就是数组了,可能是我太菜也可能是没必要用所以后面两个几乎没用过,所以基本上忘光了)。

偶尔刷刷 leetcode,起初是为了加深对 js 的语法的掌握,现在感觉语法啥的就那么回事,数据结构才更值得自己去深入学习一下,兴许以后写个什么复杂玩意儿就用上了。

其他语言我不太懂,但是感觉下面这些很大程度简化了一些前端在数据结构和算法上花费的时间:

还有太多太多了

最近想花时间补补这方面的知识了,不仅仅是应对以后的面试,更多的是想在工作中写出优雅的代码来,毕竟一直 if else + for for 迭代 感觉有点···

所以就想问问大佬们,你们在工作中用了什么数据结构,香不香?

4651 次点击
所在节点    程序员
43 条回复
tabris17
2020-03-26 15:16:33 +08:00
跳表
lithbitren
2020-03-26 15:25:43 +08:00
映射表建树,组件递归之类的,反正就是很简单的东西,但很多人找不到轮子就是写不出来,或者找了个乐色轮子改半天也不能符合要求。还有字符串处理,很多框架熟练工连正则都不会写,emoji 识别也写不出,都是巨简单的东西,再难也难不过 leetcode 中等题。
nekoneko
2020-03-26 15:30:54 +08:00
二叉树,表栈队列还是别忘的好,说不定哪天就用上了
Jacky23333
2020-03-26 15:30:59 +08:00
数组
nekoneko
2020-03-26 15:33:30 +08:00
比如说发一大堆消息时,会用到队列,但是又有了 vip 用户,svip 用户,要保证 svip 先于 vip 先于普通用户,这时候就要优先队列也就是大小顶堆了
fancy111
2020-03-26 15:33:48 +08:00
只刷困难题的飘过。。。 数据结构也就那么多,很多时候可以靠算法自建。
minglanyu
2020-03-26 16:53:53 +08:00
@tabris17 @nekoneko 看来在服务端还是蛮有用的 如果我想写 node 的话真得加强了
minglanyu
2020-03-26 16:55:26 +08:00
@lithbitren 正则确实是字符串处理利器 框架熟练工不可怕 不知道自己是框架熟练工的才可怕
minglanyu
2020-03-26 16:56:02 +08:00
@Jacky23333 数组是真的好用 233
minglanyu
2020-03-26 16:56:33 +08:00
@fancy111 大佬牛杯 我就先刷刷 easy 和中等就好了
isRealLeven
2020-03-26 17:05:35 +08:00
双链表
wellsc
2020-03-26 17:11:42 +08:00
万物皆可 map
Harv
2020-03-26 17:19:38 +08:00
正巧刚用环形队列写了个存储接收数据的程序。
minglanyu
2020-03-26 17:21:23 +08:00
@wellsc 小 map + 大 Map
minglanyu
2020-03-26 17:22:09 +08:00
@Harv 厉害的
Leonard
2020-03-26 17:22:25 +08:00
数组
minglanyu
2020-03-26 17:24:34 +08:00
@isRealLeven 刚学了下单链表的双指针,还蛮好用 用双链表写了啥啊大佬
hauzi
2020-03-26 17:24:38 +08:00
数组最多啦
cgh
2020-03-26 17:29:01 +08:00
@Harv 什么场景,不能直接存储吗?
angryfish
2020-03-26 17:29:05 +08:00
数据结构用得很多,但都是库有的啊。list,set,map,不天天用,不用自己实现而已。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/656383

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX