1、 采用传统的递归 (O(n)的空间复杂度) 2、采用 Stack + 迭代的方式 (O(n)的空间复杂度) ①、先序遍历 ②、中序遍历 优化 ③、后续遍历 a、采用 Stack 进行压栈操作,同时采用一个 Map 记录该节点的右孩子是否被访问过 b、采用一个指针记录当前右孩子是否访问过 c、前序 ...
分类:
其他好文 时间:
2018-10-05 14:02:10
阅读次数:
139
希尔排序是插入排序的改进版本,它与插入排序的不同之处在于,它会优先比较距离较远的元素。其中它的时间复杂度为O(n^1.3),空间复杂度O(1),算法相对不稳定。 ...
分类:
编程语言 时间:
2018-10-04 11:41:38
阅读次数:
134
k近邻优点:精度高、对异常值不敏感、无数据输入假定;k近邻缺点:计算复杂度高、空间复杂度高import numpy as npimport operatorfrom os import listdir# k近邻分类器def classify0(inx, dataSet, labels, k): da ...
分类:
其他好文 时间:
2018-10-04 09:51:20
阅读次数:
200
问题: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 说明: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 要求使用空间复杂度为 O(1) 的原地算法。 方法一 解题思路 : 数组无论怎样移动,元素之间的顺序是不会变得,只要找到最后的状态即可; 使用一个 ...
分类:
编程语言 时间:
2018-10-04 08:53:30
阅读次数:
159
知识来源:算法导论 数据结构的扩展步骤:(在真正设计的时候,下面的步骤的顺序可以置换) 1.选择一种基础数据结构 2.确定基础数据结构中需要维护的附加信息 3.检验基础数据结构上的基本修改操作能否维护附加信息 4.设计需要的新操作 如果要插入数值3,首先要知道3应该插入的位置。使用二分查找可以最快定 ...
分类:
其他好文 时间:
2018-10-03 00:42:20
阅读次数:
251
冒泡排序的基本原理是:每次比较两个元素,顺序错误就交换两个,直到没有再需要交换。其中时间复杂度为 O(n^2),空间复杂度为O(1),算法相对稳定。 ...
分类:
编程语言 时间:
2018-10-02 20:42:40
阅读次数:
201
插入算法的基本工作原理:对于未排序列,在已排序列中从后向前扫描,找到相应的位置并插入。其中时间复杂度O(n^2),空间复杂度O(1),算法相对稳定。 ...
分类:
编程语言 时间:
2018-10-02 20:20:08
阅读次数:
99
选择排序的工作原理是:每次在排序序列中找到最小(大)元素,放在起始位置,然后在剩下的序列中继续寻找最小(大)元素。其中时间复杂度是O(n^2),空间复杂度O(1),算法不稳定。 ...
分类:
编程语言 时间:
2018-10-02 17:51:17
阅读次数:
139
这是我BIGO前端面试时,面试官给我出的一道题,题目是长度为N的数组,元素大小范围在[1,N-1],只有一个重复的元素,用O(n)的时间复杂度和O(1)的空间复杂度找出来这个重复的元素, 大致思路 1、因为总共有N个数,每个数的范围是1到N-1,只有一个重复的数,所以这些数肯定是连续的 2、把对应的 ...
分类:
编程语言 时间:
2018-10-02 17:27:43
阅读次数:
259
1. k-近邻算法采用测量不同特征值之间的距离方法进行分类 优点:精度高、对异常值不敏感、无数据输入假定 缺点:计算复杂度高、空间复杂度高 适用数据类型:数值型和标称行 存在一个样本数据集合,称作为训练样本集。并且样本集中每个数据都存在标签(每一数据与所属分类的对应关系)。输入没有标签的新数据后,将 ...
分类:
编程语言 时间:
2018-10-01 23:10:56
阅读次数:
197