这是一个关于算法的项目,受众主要是哪些想刷算法,但是不知道如何下手的朋友。
我之前学习Python, Java 语言的时候, 一开始看的就是文档,按照文档一点一点的看,然后跟着写代码,有时候觉得太简单了,也就不想写代码了, 过了一段时间,之前学过的东西就全忘记了。我就是单纯的想学Python,Java没有目的性的去学,学完只会也没有去练。一段时间只会必然会忘记。
总结下来就是,学习一样新的东西,首先要了解,有一个总体的印象,后期需要动手实践,不断的去熟练语法规则。
学习算法也是这样,用什么语言刷题并不重要,每个语言它各自的优势,而且语言的语法都差不多,如果不会的话,半个小时左右就可以去掌握一个语言的语法,剩下的就是在刷题的过程中去应用语法,去熟悉语法。
学习算法不能一开始就零零散散的做题,这样做的效率不是很高。在什么都不懂的情况下,看到一个题的时候会无从下手。所以我的建议就是先把常用的算法了解一下,知道都有哪些算法,之后再去刷题,这样心理才有底。所以新手在一开始就要规划好自己以什么样的方式去学习算法,等自己入门之后,就可以自己去找题目做了。
算法的提高不是一朝一夕就可以的,它需要长期的坚持,最好解决完一道题有自己的感悟,然后写成博客,自己以后也可以复习,要相信好记性不如烂笔头,一道算法题做完并不能永远的记住,所以我们要抽空看看自己写的博客,复习一下。
我想了很久才开始写这个项目,纯粹做一个分享吧,给大家提供便利。
跟着这个项目完整的走一遍,我相信你的算法一定可以的。
这个项目提供一些常用的算法和剑指offer 的一些习题讲解。我主要想让大家了解一些常用的算法,(贪心,排序,二分,递归,字符串,堆,栈,动态规划等等)懂得算法的基本**,毕竟授人以鱼不如授人以渔,网上的每道题题解都有很多,我也不想去写每个题的题解,如果掌握的一个算法,那么这类题就都会了。(如果不会,那么就去练)
我现在的想法是这个项目会包含剑指offer 的所有题目,这些题目会出现在例题或者习题里面。例题是为了方便理解算法,习题就是看完之后自己慢慢练了。
有的算法很抽象,文字反而说不清楚,还是举例子方便理解,我自己学算法的时候,就喜欢在纸上画画图,然后找例子去加深对算法的理解。
如果更新的话:
最早更新:
稍晚一些:
标签 | # | 题名 | 难度 | |
---|---|---|---|---|
剑指 Offer 03 | 数组中重复的数字 | 简单 | ||
剑指 Offer 05 | 替换空格 | 简单 | ||
剑指 Offer 06 | 从尾到头打印链表 | 简单 | ||
递归 | 剑指 Offer 07 | 重建二叉树 | 中等 | |
模拟、栈 | 剑指 Offer 09 | 用两个栈实现队列 | 简单 | |
递推 | 剑指 Offer 10- I | 斐波那契数列 | 简单 | |
递归 | 剑指 Offer 10- II | 青蛙跳台阶问题 | 简单 | |
二分 | 剑指 Offer 11 | 旋转数组的最小数字 | 简单 | |
剑指 Offer 12 | 矩阵中的路径 | 中等 | ||
剑指 Offer 13 | 机器人的运动范围 | 中等 | ||
剑指 Offer 14- I | 剪绳子 | 中等 | ||
剑指 Offer 14- II | 剪绳子 II | 中等 | ||
剑指 Offer 15 | 二进制中1的个数 | 简单 | ||
递归 | 剑指 Offer 16 | 数值的整数次方 | 中等 | |
剑指 Offer 17 | 打印从1到最大的n位数 | 简单 | ||
剑指 Offer 18 | 删除链表的节点 | 简单 | ||
剑指 Offer 19 | 正则表达式匹配 | 困难 | ||
剑指 Offer 20 | 表示数值的字符串 | 中等 | ||
剑指 Offer 21 | 调整数组顺序使奇数位于偶数前面 | 简单 | ||
剑指 Offer 22 | 链表中倒数第k个节点 | 简单 | ||
剑指 Offer 24 | 反转链表 | 简单 | ||
剑指 Offer 25 | 合并两个排序的链表 | 简单 | ||
剑指 Offer 26 | 树的子结构 | 中等 | ||
剑指 Offer 27 | 二叉树的镜像 | 简单 | ||
剑指 Offer 28 | 对称的二叉树 | 简单 | ||
剑指 Offer 29 | 顺时针打印矩阵 | 简单 | ||
模拟、栈 | 剑指 Offer 30 | 包含min函数的栈 | 简单 | |
剑指 Offer 31 | 栈的压入、弹出序列 | 中等 | ||
剑指 Offer 32 - I | 从上到下打印二叉树 | 中等 | ||
剑指 Offer 32 - II | 从上到下打印二叉树 II | 简单 | ||
剑指 Offer 32 - III | 从上到下打印二叉树 III | 中等 | ||
剑指 Offer 33 | 二叉搜索树的后序遍历序列 | 中等 | ||
剑指 Offer 34 | 二叉树中和为某一值的路径 | 中等 | ||
剑指 Offer 35 | 复杂链表的复制 | 中等 | ||
剑指 Offer 36 | 二叉搜索树与双向链表 | 中等 | ||
模拟 | 剑指 Offer 37 | 序列化二叉树 | 困难 | |
剑指 Offer 38 | 字符串的排列 | 中等 | ||
剑指 Offer 39 | 数组中出现次数超过一半的数字 | 简单 | ||
剑指 Offer 40 | 最小的k个数 | 简单 | ||
模拟 | 剑指 Offer 41 | 数据流中的中位数 | 困难 | |
剑指 Offer 42 | 连续子数组的最大和 | 简单 | ||
剑指 Offer 43 | 1~n 整数中 1 出现的次数 | 困难 | ||
剑指 Offer 44 | 数字序列中某一位的数字 | 中等 | ||
排序 | 剑指 Offer 45 | 把数组排成最小的数 | 中等 | |
剑指 Offer 46 | 把数字翻译成字符串 | 中等 | ||
剑指 Offer 47 | 礼物的最大价值 | 中等 | ||
剑指 Offer 48 | 最长不含重复字符的子字符串 | 中等 | ||
剑指 Offer 49 | 丑数 | 中等 | ||
剑指 Offer 50 | 第一个只出现一次的字符 | 简单 | ||
剑指 Offer 51 | 数组中的逆序对 | 困难 | ||
剑指 Offer 52 | 两个链表的第一个公共节点 | 简单 | ||
二分 | 剑指 Offer 53 - I | 在排序数组中查找数字 I | 简单 | |
二分 | 剑指 Offer 53 - II | 0~n-1中缺失的数字 | 简单 | |
剑指 Offer 54 | 二叉搜索树的第k大节点 | 简单 | ||
剑指 Offer 55 - I | 二叉树的深度 | 简单 | ||
剑指 Offer 55 - II | 平衡二叉树 | 简单 | ||
剑指 Offer 56 - I | 数组中数字出现的次数 | 中等 | ||
剑指 Offer 56 - II | 数组中数字出现的次数 II | 中等 | ||
剑指 Offer 57 | 和为s的两个数字 | 简单 | ||
剑指 Offer 57 - II | 和为s的连续正数序列 | 简单 | ||
剑指 Offer 58 - I | 翻转单词顺序 | 简单 | ||
剑指 Offer 58 - II | 左旋转字符串 | 简单 | ||
剑指 Offer 59 - I | 滑动窗口的最大值 | 简单 | ||
剑指 Offer 59 - II | 队列的最大值 | 中等 | ||
剑指 Offer 61 | 扑克牌中的顺子 | 简单 | ||
剑指 Offer 62 | 圆圈中最后剩下的数字 | 简单 | ||
剑指 Offer 63 | 股票的最大利润 | 中等 | ||
剑指 Offer 64 | 求1+2+…+n | 中等 | ||
剑指 Offer 65 | 不用加减乘除做加法 | 简单 | ||
剑指 Offer 66 | 构建乘积数组 | 中等 | ||
剑指 Offer 67 | 把字符串转换成整数 | 中等 | ||
剑指 Offer 68 - I | 二叉搜索树的最近公共祖先 | 简单 | ||
剑指 Offer 68 - II | 二叉树的最近公共祖先 | 简单 | ||
面试题4 | 二维数组中的查找 | 中等 | ||
面试题60 | n个骰子的点数 | 中等 |