例子 找出一组数中的最大值。 递归思路: 找到左边和右边的最大值max左和max右,max左和max右中的最大值就是这组数的最大值;以此类推···直到所有数都排好序。 递归原理 子过程压栈出栈的过程。 任何递归过程都可以改成非递归。 递归时间复杂度的计算——Master公式 ...
分类:
其他好文 时间:
2020-02-09 20:13:29
阅读次数:
61
题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 法一:非递归 /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } ...
分类:
其他好文 时间:
2020-02-08 00:52:54
阅读次数:
69
二叉树的基本操作,为 二叉查找(搜索、排序)树、二叉平衡树(AVL树)、红黑树 等提供基础接口。 名称空间:namespace BTO 基础接口如: ① 遍历操作: 递归 和 非递归 版本的 先序、中序、后序 遍历。 层序遍历。 接口原型:void xxxTraversal(_Node*& _nod ...
分类:
其他好文 时间:
2020-02-06 23:11:01
阅读次数:
84
树的遍历(Pre、In、Post递归&非递归算法,层序遍历) 输入样例 输出样例 ...
分类:
其他好文 时间:
2020-02-05 18:02:11
阅读次数:
55
目录 0 前导知识 快速幂 大数乘积取模 1 质数 根号算法 埃氏筛 欧拉筛 米勒罗宾素数检测 2 公因数与质因数 质因数分解 公因数 3 欧拉函数 欧拉函数 欧拉降幂 费马小定理 以下正文 前导知识:快速幂,大数乘积取模 快速幂 有二进制非递归和基本递归两种做法,代码呈现的是二进制非递归 大数乘积 ...
分类:
其他好文 时间:
2020-02-04 10:40:18
阅读次数:
101
二叉树的遍历 前序遍历 "Leetcode preorder" 中序遍历 "Leetcode inorder" 后续遍历 "Leetcode postorder" Morris Traversal 前序遍历 递归 时间O(n), 空间O(n) 非递归 时间O(n), 空间O(n) 中序遍历 递归 非 ...
分类:
其他好文 时间:
2020-02-02 15:55:30
阅读次数:
63
1.二分查找算法(非递归) 此篇写的是非递归算法,递归的在之前的查找算法中写过了。 1.1 算法的适用条件 二分查找只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后在查找。 1.2算法的效率: 时间复杂度为O(log2 n) 实例:使用二分查找的非递归形式对数组{1 3 8 10 1 ...
分类:
编程语言 时间:
2020-02-02 01:28:12
阅读次数:
98
树结构专题 二叉树 几种典型运算 先序非递归 中序非递归 — 记忆区别 1 后序非递归 中序遍历的二叉树线索化 — 记忆 二叉搜索树 二叉搜索树基本操作 — 记忆 二叉树的路径最大和 知识点和代码均学习于Acwing: https://www.acwing.com/activity/ ...
分类:
其他好文 时间:
2020-02-01 12:50:54
阅读次数:
68
树其实在本质上就是一对多,链表就是一对一。 二叉树的建立: 这里的代码采用的是最粗暴的创建方法,无实际用处。但初次学习二叉树可以通过这个创建方法更好的理解二叉树。 二叉树的遍历: 遍历在大体上分为递归遍历和非递归遍历。 遍历总共三种遍历顺序: 1.先序遍历:根,左,右 2.中序遍历:左,根,右 3. ...
分类:
编程语言 时间:
2020-02-01 00:49:01
阅读次数:
99
面试题25:合并两个排序的链表 题目描述 输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。 链表结构: 问题分析 这道面试题,太常见了!!! 不难,但是容易出错。一方面是合并过程链表中间断裂或者没有做到递增,另一方面是代码的鲁棒性不行,也就是忽略了特殊测试(比如任意一个 ...
分类:
编程语言 时间:
2020-01-31 20:30:16
阅读次数:
73