不了解这2个概念的同学可能会认为他俩之间有着某种一丝丝的联系,毕竟哲学上讲过万物都是联系的,但是我要说的是他们从科学概念上出发毫无联系。 上一讲就讲过稳定排序,是指在排序算法中,相同值的两个元素,在输入数组中先出现的数在…
回溯
按照我的惯例还是先把实例放出来撕咬一番。 例1:n皇后问题,在一个N*N的棋盘上放置N个皇后,每行一个并使其不能互相攻击(同一行、同一列、同一斜线45度上的皇后都会自动攻击)。 例如4皇后: 说明:图展示了4个皇后依次选…
A*算法
所有的知识都来自于大师们的慷慨遗传,我们书写的只是他们的代代相传。 A星算法是最优的寻路算法,常用于游戏中寻找地图上2点之间最低耗价的路径,当然,没一点有各种属性,例如,点有横纵座标,点有地形属性,是属于沼泽,还是沙丘,…
堆排序和其他排序算法的总结
目录 堆的定义和性质 优先级队列 插入 删除并返回最大关键字的元素 返回最大关键字的元素 修改优先级 创建堆 堆排序和创建堆的时间复杂度分析 其他排序 链式基数排序 直…
插入排序算法
算法: 对于少量元素的排序,它是一个有效的算法。 假设有一个数组:A[1 …. n] 实现: For j = 2 to A.length key = A[j] i=j-1 While ( i>0 and…
分治算法中的可优化点(三)
这一节来聊一聊,老生常谈的2个优化。 优化分治算法,单从降低时间复杂度的角度出发,也就是从分治算法的时间复杂度的递推公式出发…
三维座标莫顿码计算 c++算法程序
莫顿码可以将多维数据转化为一维数据编码,根据一维编码位数可确定多维数据保留精度,是一种比较常用的压缩编码方法,尤其是作为哈希表的映射算法等,加速了树结构数据的存储和访问速度。 莫顿编码也叫z-order code ,因为…
Leet Code Maximum Depth of Binary Tree
class Solution(object): def maxDepth(self, root): """ :type root: TreeNode :rtype: int """ if root is None: re…
LeetCode 3Sum
class Solution(object): def threeSum(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ if num…
LeetCode Nim Game
class Solution { public: bool canWinNim(int n) { if (n % 4 == 0) return false; else return true; } }; Runtime:…
C++实现中缀表达式求值代码
给出中缀表达式字符串,求出值。 主要思路: 1.对字符串进行词法分析,分析结果存储到二元数组,用该二元数组存储中缀表达式。 2.将中缀表达式转化成后缀表达式。 3.利用栈对后缀表达式求值。 特点: 能去掉字符串的空格。 …
算法-找出缺失的整数
题目:一个无序数组里有99个不重复正整数,范围从1到100,唯独缺少一个整数。如何找出这个缺失的整数? 解法一: 创建一个HashMap,以1到100为键,值都是0 。然后遍历整个数组,每读到一个整数,就找到HashMa…