是否在平时的业务开发中忘记了编程的魅力?
是否失去了第一次接触代码的好奇心?
可以尝试下支配数据结构,结合各种脑洞算法,巧妙解决一个个问题。
最近用的是leetcode
其实算法不仅仅是很高端的动态规划、贪心算法、各大有名算法。能熟悉一些链表、树、数组、字符串处理也是算法。算法不仅是属于算法工程师的,也属于客户端工程师。
特别适合有三分钟热度的不服输的同学
1分钟读题,2分钟想方案,然后是n分钟的编码、自测、边界case和优化直到accept。
因为3分钟后总觉得自己能行,然后不管半小时还是一小时都会解决掉它,最后很爽,很有成就感。
如果时间复杂度和空间复杂度都超过了所有人,就能兴奋小半天。如果没有最优,去评论区看看其他大佬的解法,看懂了后直呼:妙啊!
对于android工程师
我是用kotlin做题的,除了开拓思维外,也顺便更了解了kotlin使用各种数据结构。
比如
- 有IntArray,有CharArray、StringArray吗?
- 要求返回list<T> 但是没有add remove接口,我怎么动态添加呢?
- 各种遍历 0..n-1,down to,step 之类的
- 二维数组Array<CharArray> 如果要顺时针遍历,怎么搞呢
- 通过TreeNode拷贝一棵树,ListNode返回一个链表
就算做简单题也很有趣
- 利用快排的方案,一次遍历把数组分成左边奇数、右边偶数
- 类斐波拉契数列问题 如果用递归stackOverflow了怎么办?
- 重排序链表 链表会循环?
- 遍历一颗树,结合队列和栈来帮助遍历,顺便记录下节点的层级
不定期更新,一起来提升程序员的自我修养
网友评论