算法类
文章平均质量分 54
LitterBro
个人学习所用
展开
-
【排序】——堆排序
堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。因此分为大根堆与小跟堆。原创 2022-10-19 09:57:18 · 289 阅读 · 0 评论 -
JAVA 读取目录下所有文件
/** * @param list:输出文件list * @param path:文件目录路径 * @apiNote 递归获取无后缀文件 */ public void getFiles(List<File> list, String path){ File file = new File(path); if(!file.exists()) { ret...原创 2020-02-15 22:12:39 · 166 阅读 · 0 评论 -
合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ...原创 2018-08-25 23:44:21 · 113 阅读 · 0 评论 -
变态青蛙跳
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。分析:f(1) = 1f(2) = f(2-1) + f(2-2); //跳法:跳1级,跳2级f(3) = f(3-1) + f(3-2) +f(3-3); ...原创 2018-08-21 22:24:31 · 256 阅读 · 0 评论 -
两个stack模拟队列
stack就三个接口函数,push(),top(),pop()。push()会将一个元素放入stack中。 top()会返回stack中的栈顶元素,返回的是reference,可以就地修改值。 pop()移除栈顶元素,无返回值。 size()返回stack长度。 empty()返回stack是否为空。1、stack1作为入栈,stack2作为出栈2、若stack2不为空,直接将s...原创 2018-08-19 23:49:32 · 194 阅读 · 0 评论 -
前序与中序构建二叉树
链接:https://www.nowcoder.com/questionTerminal/8a19cbe657394eeaac2f6ea9b0f6fcf6来源:牛客网输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并...原创 2018-08-19 23:20:16 · 342 阅读 · 0 评论 -
八大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间...转载 2018-04-18 15:18:44 · 109 阅读 · 0 评论 -
指针 修改 const
大家都知道如下代码中,被const限定的a是不可以被直接修改的12345void main(){ const int a = 3; a=1;} 在C++中const修饰的常量,不能被转载 2018-01-23 15:20:52 · 241 阅读 · 0 评论 -
set 容器使用
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树高度相等。平衡二叉检索树使用中序遍历算法,检索效率高于vector、deque和list等容器,另外使用中序遍历可将键值按照从小到大遍历出来。构造set集合...原创 2017-10-04 15:32:07 · 1044 阅读 · 0 评论 -
C 全排列 递归写法
#include #include #include #define max 200void step(char [], int, int, int *);void swap(char *, char *);int main(){ char str[max+1]; scanf("%s", str); int n = 0; step(str, 0, s原创 2017-10-02 22:12:01 · 324 阅读 · 0 评论 -
C++声明和定义的区别
C++声明和定义的区别 《C++Primer》第四版 2.3.5节中这么说到:①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。②变量声明:用于向程序表明变量的类型和名字。③定义也是声明:当定义变量时我们声明了它的类型和名字。④extern关键字:通过使用extern关键字声明变量名而不定义它。 1.定义也是声明,extern声明不转载 2017-10-08 15:30:47 · 161 阅读 · 0 评论 -
面试常考--二叉树算法
版权所有,转载请注明出处,谢谢!http://blog.csdn.net/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二转载 2017-04-06 10:46:51 · 363 阅读 · 0 评论