学java有什么网站可以刷题?
在大学刷了几千道题的 ACM 学长来说下吧。
题主不是搞竞赛,只是想检验一下自学成果的话,那建议刷 LeetCode 即可。
一方面可以检验自己的成色,另一方面面试找工作的题很多都是出自 LeetCode。
LeetCode 上面有 1k+ 的题目,没有必要都刷完。
每个专题选一些有代表性的题目去刷,去理解去吃透。
其实刷题这件事,就是按照专题来刷就好,数据结构与算法的重要且常考的内容就那么多:
数据结构就是:数组、链表、栈、队列、散列表、堆、树、图等。
算法就是:回溯算法、分治算法、枚举算法、贪心算法、动态规划、查找、匹配、排序等。
针对 LeetCode,题的解法有很多,我们往往追求的是最优解,这里有一份清华学长整理的 LeetCode 最优解,强烈推荐:
关于 LeetCode 的刷题顺序,我做了整理,大家可以跟着走。
这份清单我会一直更新,同样也会一步步的把每个知识点的入门讲解和每道题的题解用“图解”的方式分享给大家。
站在初学者的角度,用最直白的方式和最易懂的代码,最大可能摒除不同编程语言的带来的干扰,理论 + 实战,带你彻底搞定数据结构与算法。
数据结构
【数组】
精讲:
LeetCode1 两数之和
LeetCode4 寻找两个正序数组地中位数
LeetCode15 三数之和
LeetCode75 颜色分类
LeetCode76 最小覆盖子串
【链表】
精讲:
LeetCode19 删除链表的倒数第 N 个节点
LeetCode24 交换链表:交换吧,链表!
LeetCode25 K 个一组翻转链表
LeetCode141 环形链表:链表,你有环嘛?
LeetCode142 环形链表Ⅱ:有环链表,你的入口在哪?
LeetCode160 相交链表:对不起,相交链表,我做的有点不浪漫。
LeetCode206 反转链表:反转吧,链表!
LeetCode707 设计链表:稳了,一题学会链表的 5 种操作!
【栈和队列】
精讲:
LeetCode20 有效的括号:栈,你告诉我这个括号配不配!
LeetCode150 逆波兰表达式求值:栈,求求这个逆波兰表达式的值!
LeetCode225 用队列实现栈:咋又要用队列实现栈了嘛?!
LeetCode232 用栈实现队列:用栈实现队列怎么样?
LeetCode239 滑动窗口最大值:队列,帮我搞一下这个滑动窗口最大值。
LeetCode703 数据流中的第 k 大元素
LeetCode1047 删除字符串中的所有相邻重复项:栈,你给我玩这个字符消消乐!
【字符串】
精讲:
剑指 offer05 替换空格:字符串,把这个碍眼的空格给我换掉!
剑指offer58-Ⅱ 左旋转字符串:
LeetCode151 翻转字符串里的单词:
LeetCode344 反转字符串:反转字符串不是关键,重要的是我想说...
LeetCode541 反转字符串Ⅱ:这次反转的字符串,不简单。
【哈希表】
LeetCode1 两数之和
LeetCode15 三数之和
LeetCode18 四数之和
LeetCode49 字母异位词分组
LeetCode242 有效的字母异位词
【二叉树】
LeetCode 94 二叉树的中序遍历
LeetCode101 对称二叉树
LeetCode102 二叉树的层序遍历
LeetCode 104 二叉树的最大深度
LeetCode 105 从前序与中序遍历序列构造二叉树
LeetCode 114. 二叉树展开为链表
LeetCode236 二叉树的最近公共祖先
LeetCode 543 二叉树的直径
【二叉搜索树】
LeetCode96 不同的二叉搜索树
LeetCode98 验证二叉搜索树
LeetCode235 二叉搜索树的最近公共祖先
算法
【递归 & 分治 & 回溯】
LeetCode 17 电话号码的字母组合
LeetCode 22 括号生成
LeetCode 39 组合总和
LeetCode 46 全排列
LeetCode 78 子集
LeetCode 79 单词搜索
LeetCode 226 翻转二叉树
【贪心算法】
LeetCode 11. 盛最多水的容器
LeetCode 55. 跳跃游戏
LeetCode 122. 买卖股票的最佳时机 II
LeetCode 309. 最佳买卖股票时机含冷冻期
LeetCode 406. 根据身高重建队列
LeetCode 714. 买卖股票的最佳时机含手续费
【深度优先 & 广度优先】
LeetCode22 括号生成
LeetCode36 有效的数独
LeetCode37 解数独
LeetCode51 N皇后
LeetCode52 N皇后Ⅱ
LeetCode102 二叉树的层次遍历
LeetCode104 二叉树的最大深度
LeetCode 111 二叉树的最小深度
【二分查找】
LeetCode34 在排序数组中查找元素的第一个和最后一个位置
LeetCode69 实现 int sqrt(int x) 函数
【字典树】
LeetCode79 单词搜索
LeetCode208 实现 Trie(前缀树)
LeetCode212 单词搜索Ⅱ
【位运算】
LeetCode52 N皇后Ⅱ
LeetCode191 位1的个数
LeetCode231 2 的幂
LeetCode338 比特位计数
【动态规划】
LeetCode70 爬楼梯
LeetCode72 编辑距离
LeetCode120 三角形最小路径和
LeetCode121 买卖股票的最佳时机
LeetCode122 买卖股票的最佳时机Ⅱ
LeetCode123 买卖股票的最佳时机Ⅲ
LeetCode152 乘积最大子序列
LeetCode188 买卖股票的最佳时机 Ⅳ
LeetCode300 最长上升子序列
LeetCode309 买卖股票的最佳时机含冷冻期
LeetCode322 零钱兑换
LeetCode714 买卖股票的最佳时机含手续费
【并查集】
LeetCode200 岛屿的个数
LeetCode547 省份数量
不断完善ing,还是那句话,会慢慢的把图解 LeetCode 的题解都更新上来,这是个长期的过程。
针对 LeetCode,题的解法有很多,我们往往追求的是最优解,这里有一份清华学长整理的 LeetCode 最优解,强烈推荐:
我在大学的时候参加 ACM,拿过金银铜奖,刷题贯穿了我的整个大学生涯,总结了一些刷题的经验,感兴趣的可以看下。
如果题主想要多了解一下别的刷题网站,我这里也有,可以看下下面的回答:
希望数据结构与算法的学习不会成为你成功路上的绊脚石。