![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法笔记
刷题笔记
想转IT的机械君
世事无穷,劳生有限...
展开
-
【剑指offer】丑数
题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 分析思路: 代码实现: public class UglyNumber { public int GetUglyNumber_Solution(int index) { if (index == 0) { return 0; } //因子为2 int x = 0; //因子为3 .原创 2020-07-30 22:34:19 · 258 阅读 · 0 评论 -
【LeetCode】Q687-最长同值路径
Q687. 最长同值路径 题目描述: 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值。 这条路径可以经过也可以不经过根节点。注意:两个节点之间的路径长度由它们之间的边数表示。 示例: 5 / \ 4 5 / \ \ 1 1 5 输出:2 示例: 1 / \ 4 5 / \ \ 4 4 5 输出:原创 2020-06-29 14:31:35 · 377 阅读 · 2 评论 -
【递归】怎么理解递归?
以下内容来自自知乎用户帅地的回答!!! 版权详情: 作者:帅地 链接:https://www.zhihu.com/question/31412436/answer/683820765 来源:知乎 递归的三大要素 第一要素:明确你这个函数想要干什么 对于递归,我觉得很重要的一个事就是,这个函数的功能是什么,他要完成什么样的一件事,而这个,是完全由你自己来定义的。也就是说,我们先不管函数里面的代码什么,而是要先明白,你这个函数是要用来干什么。例如,我定义了一个函数: // 算 n 的阶乘(假设n不为0) in转载 2020-06-28 19:14:29 · 226 阅读 · 0 评论 -
【排序】堆、堆排序及Top K问题
堆(Heap)是一种特殊的二叉树,有以下两个特点: 1.堆是一个完全二叉树; 2.堆中每个节点的值都必须大于等于其子树中每个节点的值(大顶堆)或小于等于其子树中每个节点的值。(小顶堆)。 1、堆的实现 1.1、堆的储存方式 对于完全二叉树而言,采用数组进行储存是一个非常不错的选择,例如上图中的两个堆采用数组进行储存则结构为: 此处有点特殊的是,数组下标为0的位置闲置没有储存数据。在这种情况下,...原创 2020-03-23 21:24:48 · 241 阅读 · 0 评论 -
【排序】线性排序-桶排序
1.原理 “桶排序”的原理很好理解,举一个学习委员或者科代表收作业的例子。收作业这项工作很简单,我们可以逐步考虑收作业场景的“升级”。第一阶段,老师只要求你把同学们的作业交上来。这时候,同学们把作业交上来然后你抱给老师,任务完成;第二阶段,老师要了解下同学们作业交的情况,需要统计交了多少人,没交多少人。这时候,同学们作业交上来以后你得数一遍,然后交上去,任务完成;第三阶段,老师不光要知道交的人数,...原创 2020-02-15 23:00:24 · 210 阅读 · 0 评论 -
【剑指offer】Q5-替换空格
题目描述: 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 思路分析:1)直接使用JDK自带的replace()方法;2)从后往前逐个替换:首先遍历字符串,统计空格数量;建立字符数组,新数组的长度应该为原数组长度+2*空格数量,因为1个空格变为%20长度加2; 代码: 1)使用JDK自带方法 class Solution { public String replaceSpace(St原创 2020-06-04 09:42:47 · 127 阅读 · 0 评论 -
【剑指offer】Q4-二维数组中的查找
题目描述: 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] 给定 target = 5,返回原创 2020-06-02 16:33:58 · 167 阅读 · 0 评论 -
【剑指offer】Q3-找出数组中重复的数字
题目描述: 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。 请找出数组中任意一个重复的数字。示例: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 分析思路: 创建一个集合类,遍历数组,首先判断集合类中是否包含该元素,若有返回该元素,若无则将该元素加入到集合类中。 代码: class Solution { public int findRepeatNumber(int原创 2020-06-02 15:54:07 · 166 阅读 · 0 评论