先学一些基本的数据结构(如果连树是什么都不知道而是上来就刷题的话,刚开始会花大量的无用功在这些基础概念上面),比如:线性表(顺序表、链表)、特殊的线性表(栈、队列)、树(BST、AVL)、图,以及这些结构的基本性质。
掌握了这些数据结构的基本概念和性质后,开始刷题,LeetCode也好,牛客网也罢,随你心情,老老实实当个小镇做题家(这是个长期的过程,很容易劝退)。
语言方面,JDK 中有大量的类库方法,对一些典型的问题(比如:查找、排序、字符串匹配、最短路径问题……),尽量看看这些方法都是解决这些问题的,比如 Arrays 类的 sort() 方法就是采用了优化后的快排来实现数组排序的。
对于一些算法思想(比如贪心、回溯),只做几道题,没啥效果,只有题量上去后才会慢慢积累出经验,印象深刻,对这些算法思想也会有一个新的认知。
最后,最重要的:算法没有捷径,跟数学有点像,只有靠多刷题,多总结才能提升。任何说算法有捷径或者可以速成的都是骗人的,一定多要动手coding,眼高手低是大忌。