数据结构与算法
lizhenda1024
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
青蛙跳台阶(斐波那契数列)
题目描述题目一:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。变态跳台阶:题目二:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。实现思路题目一:刚接触到这个题目是没有头绪的,观察了一段时间后发现,青蛙的跳法恰好符合Fibonacci sequen...原创 2019-12-30 18:07:36 · 658 阅读 · 0 评论 -
查找旋转数组中的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路看到题目的第一反应,肯定不能直接遍历数组,要寻找时间复杂度小于O(n)的方法。由于题目限定的是非递减...原创 2019-12-29 15:26:22 · 145 阅读 · 0 评论 -
用两个栈来实现一个队列,完成队列的Push和Pop操作。
栈的特点是先进后出,队列的特点是先进先出方法一假设现在有两个栈stack1和stack2如果我们用一个stack1来存储数据,用stack2负责把stack1的数据倒序(就是把数据存进stack2再存进stack1),这样就可以实现队列的特性,但是显然这种算法的时间复杂度和空间复杂度都很大。方法二我们可以用stack1来存储数据(进行push()操作),用stack2来取出数据(进行pop...原创 2019-12-28 23:25:01 · 265 阅读 · 0 评论 -
二维数组的查找
题目在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路既然数组是有规律的,传统的遍历肯定不是最优解。假设有这样一个二维数组,我们要找的数字11。...原创 2019-12-26 21:18:22 · 143 阅读 · 0 评论 -
c语言实现迪杰斯特拉算法(邻接表)
储存结构,结构体的定义:(权值w用于表示两点间路径的花费)typedef int Status;typedef struct ENode//图的邻接表定义{ int adjVex;//任意顶点u相邻接的顶点 int w;//边的权值 struct ENode* nextArc;//指向下一个边结点}ENode;typedef struct LGraph{ ...原创 2019-12-25 23:25:16 · 2050 阅读 · 0 评论 -
哈夫曼编码译码系统(c/c++)
哈夫曼编码译码系统的实现,主要包含三部分:1、创建哈夫曼树2、编码函数3、译码函数编写代码时为了方便,在这里混用了c++的输入输出流。主体用c语言实现。下面是代码部分:1、头文件,以及储存结构:#include<stdio.h>#include<iostream>using namespace std;#define MAX 2000typedef c...原创 2019-12-25 23:22:02 · 1625 阅读 · 3 评论 -
找出数组中重复数字
题目:在一个长度为n的数组里所有数字都在 0 ~ n-1 的范围内,找到数组中的重复数字。思路:看到问题之后的直接想法是将输入的数组排序,排序后找到重复数字是一件很容易的事情。可是排序一个长度为n的数组需要 O(nlogn) 的时间。为了降低时间复杂度,考虑用哈希表来解决。方案就是先创建一个和数组等长的哈希表,然后从头扫描数组,每扫描到一个数字,判断哈希表里面是否包含此数字。如果哈希表还没有...原创 2019-12-25 21:37:57 · 239 阅读 · 0 评论 -
根据先序序列和中序序列生成二叉树(Java)
实现思路在二叉树中,有三种主要的遍历方式(假设父节点为N,左孩子为L,右孩子为R):先序遍历:N -> L -> R中序遍历:L -> N -> R后序遍历:L -> R -> N假设现有一颗二叉树如上图所示,上述二叉树的先序遍历和中序遍历结果为:先序遍历:ABCDEF中序遍历:CBDAEF分析: 先序遍历服从规则“根左右”,所以,对于一个先序...原创 2019-12-25 21:33:50 · 3383 阅读 · 1 评论
分享