有时间就写写的做题随笔
文章平均质量分 68
有时间就写写,等之后把本地的《剑指Offer》的刷题笔记整理一下全部上传,适合纯小白的解题思路,绝对通俗易懂。
Yearn_n
一个小白的成长之路,Java后端开发、NLP(文本生成与对话系统)。
展开
-
【冒泡排序回顾】深入理解冒泡排序
文章目录冒泡排序个人理解1.原理:2.思路:3.算法分析:4.代码:5.几个思考问题:冒泡排序个人理解冒泡排序只会操作相邻的两个数据:让小的数冒上来,大的数沉下去,N个数字要排序完成,总共进行N-1趟排序,每第i趟的排序次数为(N-i)次。外层控制循环冒泡多少趟,内层控制每一趟的循环次数==每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作。用一个例子,带你看.原创 2021-06-02 19:28:44 · 344 阅读 · 0 评论 -
【堆排序回顾】堆排序的理解
文章目录堆排序堆排序有两种方法堆排序第一种实现思路——构造堆+排序:步骤一 :构造初始堆。将给定无序序列构造成一个大顶堆(一般升序采用大顶堆,降序采用小顶堆)。步骤二 :将堆顶元素与末尾元素进行交换,使末尾元素最大。然后继续调整堆,再将堆顶元素与末尾元素交换,得到第二大元素。如此反复进行交换、重建、交换。堆排序过程:代码:为什么说堆排序没有快速排序快?如何理解“堆”?要实现一个堆,先要知道,堆都支持哪些操作以及如何存储一个堆。1、往堆中插入一个元素2.删除堆顶元素堆排序堆排序有两种方法方法一:前提.原创 2021-06-02 19:22:32 · 720 阅读 · 0 评论 -
【插入排序、选择排序回顾】插入排序、选择排序、希尔排序的理解
文章目录插入排序(Insertion Sort)插入排序具体实现:代码:复杂度:选择排序(Selection Sort):希尔排序# 插入排序、选择排序、希尔排序插入排序(Insertion Sort)一个有序的数组,我们往里面添加一个新的数据后,如何继续保持数据有序呢?很简单,我们只要遍历数组,找到数据应该插入的位置将其插入即可。这是一个动态排序的过程,即动态地往有序集合中添加数据,我们可以通过这种方法保持集合中的数据一直有序。而对于一组静态数据,我们也可以借鉴上面讲的插入方法,来进行排序,.原创 2021-06-02 19:11:35 · 145 阅读 · 0 评论 -
【归并排序回顾】深入理解归并排序
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录归并排序分治思想:分而治之划分时怎么知道划分成为一个一个的呢merge 合并并且排序,谁小把谁拉下来复杂度与稳定性:注意:常用排序算法复杂度对比:代码实现:归并排序一般用在数据量很大的外部排序(放到磁盘上的,内存放不下)分治思想:分而治之归并排序:先划分成(/2,向下取整,把mid也划分到左边)直到都只有单独的一个元素,再合并的过程就是排序的过程。合并排序,哪一个更小就放在前面,怎么拆分的就怎么合并回去,比较要合并的原创 2021-06-02 19:03:37 · 185 阅读 · 0 评论 -
【快速排序回顾】详细分析
目录快速排序思路:原理图解:代码:复杂度O(nlogn)分析:快速排序思路:先把数组中的一个数当成基准数,一般会把数组最左边的数当成基准数,而不一定是从原数组的第0个位置开始;如果把数组最左边的数当成基准数,那么【一定要先从右边开始检索比基准数小的,找到有小于基准数的就先停下】,(如果先从左边开始找大于基准数时恰好大于的基准数的在最右边时方法失效);再从左边检索比基准数大的,检索到了也暂时停下;然后交换这两个元素,然后继续检索;一旦左右检索指针相遇就立即停止检索,然后把基准数原创 2021-06-01 18:11:47 · 90 阅读 · 0 评论 -
【二刷随笔】剑指 Offer 43. 1~n 整数中 1 出现的次数——绝对非常简单易懂的思路!!!
问题描述:输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。示例 1:输入:n = 12 输出:5示例 2:输入:n = 13 输出:6解题思路——直接看代码就行//【思路】找每一位出现1时分别一共有多少情况,注意输入是n,但代表的是1-n的n个整数,分成3类来讨论class Solution { public int countDigitOne(int n) {原创 2021-05-23 17:36:42 · 85 阅读 · 0 评论 -
【二刷随笔】剑指 Offer 56 - I. 数组中数字出现的次数 位运算(详解) / 暴力解
项目场景:提示:这里简述项目相关背景:例如:项目场景:示例:通过蓝牙芯片(HC-05)与手机 APP 通信,每隔 5s 传输一批传感器数据(不是很大)问题描述:提示:这里描述项目中遇到的问题:例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据APP 中接收数据代码:@Override public void run() { bytes = mmInStream.read(buffer); mHandler.obta原创 2021-05-19 18:00:39 · 76 阅读 · 0 评论 -
【二刷随笔】剑指 Offer 37. 序列化二叉树 / leetcode 297,BFS,超详细解题记录!
目录剑指 Offer 37. 序列化二叉树 / leetcode 297:代码,注释很详细,直接看也行:思路:1、序列化2、辅助函数strToNode3、反序列化剑指 Offer 37. 序列化二叉树 / leetcode 297:二叉树的序列化与反序列化题目链接:https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof/代码,注释很详细,直接看也行: // BFS,层序遍历 时间:O(n);空间:因为用到额外的queue ,O..原创 2021-05-11 22:13:53 · 78 阅读 · 0 评论