算法 关于-0-到-n-中包含-1-的个数问题 我这里将算法包含在AlgorithmOne内,是因为我将在下面给出另外的解法,它的算法复杂度更低。AlgorithmOne的算法复杂度为$O(n\lg n)$:在count_ones内有 n 个循环,每个循环都包含一个contains_one的调用。而每个contains_one最多包含$\lg n$次while循环。
算法 高频面试考题荷兰旗问题 荷兰旗问题又称三色排序,或者彩虹排序, 因为荷兰旗就三种颜色嘛,那这道题的问题就是给你三种颜色,按照给定的顺序排好。 当然了,题目的问法各种各样,有的给数字,有的给字母,但本质都是一样的。 比如给你一个只含有三个数字的数组:312312312231111122113, 要求按照 1 2 3 的顺序排好,即:111111111222222222223…
算法 实现算法的思考路径 原则 设计 实现 优化 设计 怎么实现,通过注释+伪代码+画图的方式讲明白,这个后期稍微修补可以直接输出为文档或测试用例 思路必须做到清晰,不清晰不动手 输入、输出、这个问题的背景是什么,为了解决什么问题 实现 数据是否有序、规模多大、重复元素、取值范围 空间上怎么存储(数据结构)、内存使用有没有要求 需不需…
算法 算法由浅入深回溯法 我理解的回溯法 回溯法本质上就是穷举法,对穷举法的优化,优化的关键在于判断哪些情况是不需要考虑的,然后不去遍历这些不必要的情况(剪枝)。 理解穷举法,要理解回溯法就要先真正明白穷举法。用下面例题来理解一下穷举法 输出给的数字的全排列 输入:1 2 3 输出: {代码…} 核心步骤的伪代码: {代码…} Python实…
算法 矩阵二 在计算机几何图形中,矩阵的作用可以定义旋转,平移,缩放,投影,镜像等等,在三维设计软件中,对于物体的操作尤其重要。本篇需要用到向量的点乘和叉乘相关知识点和矩阵的基本概念,如果对向量和矩阵不太熟悉,可以先理解向量和矩阵的基本知识再来看本篇。
算法 leetcode最大子序和leetcode53 思路: 将原数组分成左右两部分,元素数都为n/2,令最大子数组的下标为i,j则i和j的情况分为三种: i,j都属于原数组的左半侧,即low<=i<=j<=mid
算法 排序算法整理Python实现 冒泡排序(Bubble Sort)是稳定排序,其基本思想是:遍历待排序列,依次两两比较,如果顺序错误就交换。如果从头开始遍历,把较大的交换到后面,结果就是越大的数据越往下沉,所以也可以称为“下沉排序”;如果从尾开始向前遍历,把较小的交换到前面,结果就是越小的数据越往上浮,这就是“冒泡排序”名称的由来。冒泡排序比较…