- 前言
- 一、制定目标
- 1、选择 "合理" 目标
- 2、坚持下定决心
- 二、制定计划
- 1、平均刷题法
- 2、跌宕起伏法
- 3、先苦后甜法
- 三、收集题目
- 1、第一步:选择 [排序] 标签
- 2、第二步:选择 [简单] 标签
- 3、第三步:选择 [通过率] 降序排列
- 4、第四步:整理出表
- 1)这是第一天的
- 2)这是第二天的
- 3)这是第三天的
- 4)这是第四天的
- 5)这是第五天的
- 6)这是第六天的
- 7)这是第七天的
- 8)这是第八天的
- 9)这是第九天的
- 四、学习刷题
- 1、排序规则
- 2、排序算法
- 3、排序函数
- 4、排序函数怎么用
- 五、开始刷题
- 1、LeetCode零基础指南
- 2、排序专题链接
- 六、算法专栏推荐
- 七、配套福利赠送
一、制定目标 1、选择 “合理” 目标「 简单题 」 懒得刷,「 中等题 」 看题解,「 困难题 」 坐一天。
这是不是你目前的现状?如果是这样,那么,这很合理!额……
今天这个教程,我将教会你如何重塑信心,东山再起,重夺刷题界的卷王卷中卷。
那么,首先,我们做任何事情,都需要有一个目标,有目标才会有方向,有目标才会有动力,有目标才会有人生的意义。所以第一步,我们要制定目标!
完整视频教程地址
之所以定下这么一个目标,是想让自己养成一个刷题的习惯,七天以后就会有自驱力!这样一个看似不可能完成的目标,一旦完成,那你将 举世无双,所向披靡,神挡杀神,佛挡杀佛!(这里配上一个御剑飞行的 BGM效果会更好)
首先,当然是好好睡一觉啦,补充一下睡眠,毕竟没有一个好身体,又如何一直坚持刷题呢?!
不!想当年 匡衡凿壁借光,勾践卧薪尝胆,班超投笔从戎,韩信胯下之辱,项羽破釜沉舟,岳飞精忠报国, 更有孙敬“头悬梁”,苏秦“锥刺股”,以及 司马光砸缸!
你这个年龄怎么能睡觉?!你这个年龄怎么睡得着的?!既然有了目标,就要制定计划!
二、制定计划 1、平均刷题法所谓平均刷题法,就是 100 道题,分九天,每天平均刷11题,最后一天多刷一题。方案如下:
但是我不推荐用这种方法,因为其实很多人都是三天热度,后面热度下去了根本坚持不下去。
2、跌宕起伏法所谓跌宕起伏法,就是 今天刷7道,明天刷15道,后天再刷7道,以此类推……方案如下:
这种方法,可以尝试,但是我有更好的办法,那就是!
3、先苦后甜法所谓先苦后甜法,就是今天刷 25 道,明天刷 20 道,后天刷 15 道,然后每天 7 道,最后一天只需要刷 5 道。方案如下:
这是基于三天热度来考虑的,趁热度最高的时候,多刷点题,三天过去,刷掉一大半,后面没有理由不坚持下去!然后,我们就要开始收集题目了。
三、收集题目 1、第一步:选择 [排序] 标签 我们既然是要刷排序的题,当然要先把排序的题都先找出来。官方分类下,目前有 257 道排序题。
先刷简单题,再刷难题,容易增加信心 和 逐步打开思路。
一般通过率高的题,相对较为简单,所以我们优先选择通过率高的题。
按照通过率降序,将所有题目分散到10天,先收集第一天,再收集第二天,然后第三天,第四天。
这里给大家介绍一个技巧,剑指Offer II 的题目一般都是力扣原题改编,所以很多会有两道一样的题,更有甚者,会有三道题。所以做出一道,就能过三道,不愧是我!
首先,我们需要了解一下排序,排序是用来干什么的?
对于数字类型的数组,排序就是把它们按照一定规则重新排列。
排序规则是写代码的人定的,常见的排序规则就是 递增排序、递减排序,当然也有其它变种,例如 偶数排前面,奇数排后面 等等。
2、排序算法 常见的排序算法总共有十来种,入门的排序算法主要有 冒泡排序、选择排序、插入排序;进阶的排序算法主要有 归并排序、希尔排序、快速排序;如果有余力,可以看一下 基数排序、计数排序 和 桶排序。
这些都不用学!!!
3、排序函数 没错,你没有听错!
接下来的才是重点,我们要刷的100道排序题,完全用不到上面的算法,也就是说你统统不用学!因为系统已经给我们实现了算法,我们只需要调用就能把一个数组排好序了!
她就是qsort。
当然啦,如果求知欲很强,还是建议学习一下,毕竟大家都会,你不会,其实也没有什么关系啦!
4、排序函数怎么用 首先,我们需要告诉程序需要排序的数组是什么;
然后,我们需要告诉程序需要排序的数组的长度是多少;
接着,告诉它每个待排序元素的字节大小;
最后,告诉它递增还是递减。
C语言给我们提供了一个回调函数,通过实现这个回调函数,我们就能告诉程序我们要递增排序还是递减排序,它的声明如下:
int cmp(const void *a, const void *b);
我们只需要实现这个回调函数即可。如果你不懂指针,那么你只需要记住这样是递增排序;
int cmp(const void *a, const void *b) { return *(int *)a - *(int *)b; }
这样是递减排序!
int cmp(const void *a, const void *b) { return *(int *)b - *(int *)a; }
就可以了!这两段代码的区别就是 a 和 b 换了一个位置,记住就好啦~~
五、开始刷题 1、LeetCode零基础指南
我推荐一开始不要看书。对于程序员来说,实践才是最重要的,你在敲代码的时候一定是在电脑边,所以可以网上找一些算法资料会比看书更有用。比如下面这个专栏就是为力扣零基础的玩家量身订做的:
这个专栏主要讲解了一些 LeetCode 刷题时的一些难点和要点,主要分为以下几个章节,并且会持续补充一些有关于方法论的文章。文章有试读,可以简单先看一看试读文章。
2、排序专题链接
语言入门:《光天化日学C语言》(示例代码)
语言训练:《C语言入门100例》试用版
数据结构:《画解数据结构》源码
算法入门:《算法入门》指引
算法进阶:《夜深人静写算法》算法模板
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)