![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
kedaya.
这个作者很懒,什么都没留下…
展开
-
丑数
题目:我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。思路:看到网上有两种思路,一种是最小堆的思想,一种是三指针,类似于动态规划的思想,下面针对三指针动态规划详细说明一下。三指针动态规划的思想其实就是类似于合并两个有序数组的思想。记丑数数组为ugly;那么ugly 的排列一定是{1,2,3,4,5,6,8……}。根据丑数的定义,任意一个丑数都是由小于它的某一个丑数因子(2或3或5)得到的。假设当前的丑数是ugly[i],如何得到有序原创 2021-05-19 10:58:11 · 74 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同思路:这个题有两种解法,先介绍第一种方法我们知道后序遍历是 左右根的顺序,所以数组的最后一个元素就是根。二叉搜索树的特点是,左子树的值小于根,右子树的值大于根。所以需要在数组中,先找到小于根结点的一部分结点,记住分界点m.【start,m-1】]是左子树数组。【m,end-1】就是右子树,遍历右子树数组中的值,如果有小于原创 2021-05-09 23:13:37 · 85 阅读 · 0 评论 -
两个链表的第一个公共结点
两个链表的第一个公共结点题目:输入两个链表,找出他们的第一个公共结点。思路:1、首先当然会想到暴力法。两重遍历,对链表1 中每个元素都去遍历一下链表2 ,这样时间复杂度是O(m*n)。不太行2、想到要从尾部开始找就好了,所以想到反转链表,将两个链表都反转一下,然后开始比较。这样时间复杂度是O(n)。但是改变了链表的结构。3、最后是双指针的方法。开始想到要用双指针,但是没想好怎么用。后面看了一些参考,恍然大悟!!具体思路:定义一个指针指向链表1:p1, 再定义一个指针指向链表2:p2.如果p1原创 2021-05-09 20:17:56 · 70 阅读 · 0 评论