随笔分类 - [5]算法
摘要:一、栈的特点 (1)栈是一种线性结构,栈中的元素遵循先入后出的原则,最先进入的元素所在位置叫做栈底,最后放入的元素所在位置叫做栈顶。 这种结构类似于盛放羽毛球的圆筒,一端封闭,另一端开口,先放入的羽毛球位于筒的底部(即栈底),后放入的羽毛球位于筒的入口(即栈顶)。 (2)栈也是一种抽象的逻辑结构,依
阅读全文
摘要:1. 链表的特点 链表是一种非线性、非顺序的物理结构,是由若干个节点组成。 链表采用的是“见缝插针”的存储方法,不要求内存连续,靠next指针关联起来。 链表的物理存储方式为随机存储,访问方式为顺序访问。 查找节点的时间复杂度为O(n),插入、删除节点的时间复杂度为O(1)。 链表适用于写操作多,读
阅读全文
摘要:最近在重温数据结构与算法,今天就从最为简单的数组开始吧(文中代码全是C++语言实现)。 1. 数组的特点 数组是有限个相同类型的元素所组成的有序集合。 数组是一种线性的物理结构,存储方式为顺序存储,访问方式是随机访问。 利用下标查找元素的时间复杂度为O(1),插入、删除元素的时间复杂度为O(n)。
阅读全文
摘要:判断点是否在凸多边形内的方法很多,此处仅给出使用向量叉积判断点是否在凸多边形内的方法。 以下图为例说明问题: 原则: 1. 将多边形的第i条边的第一个顶点指向点P得到向量 v1,然后将从第一个顶点指向第二个顶点得到向量v2,叉乘这两个向量。 2.如果叉乘结果与上一条边的叉乘结果的乘积大于0则继续执行
阅读全文
摘要:一、什么是质心坐标? 在几何结构中,质心坐标是指图形中的点相对各顶点的位置。 以图1的线段 AB 为例,点 P 位于线段 AB 之间, 图1 线段AB和点P 此时计算点 P 的公式为 。 同理,在三角形 ABC 中,三角形内点 P 的计算公式为:——公式一。 公式一的最终表示形式为: 那么如何计算参
阅读全文
摘要:我们知道递归算法非常低效,低效的原因在于递归的过程会产生冗余计算。 拿我们熟悉的斐波那契数列为例,计算公式为:F(n) = F(n - 1) + F(n - 2),其中F(0) = F(1) = 1。 例如计算F(5)的执行过程: 在此过程中,F(4) 执行了1次;F(3)执行了2次;F(2)执行了
阅读全文
摘要:在中学或大学时代,我们应该在数学中都学过椭圆方程、双曲线方程等等,当然那个时候学习这些知识的目的就是为了考试,为了能够拿个好成绩,上个好大学等。那么除此之外,这些知识对于我们今后的生活或者工作又带来什么便利呢? 巧合的是作为程序员,尤其是偏向算法方面的人员,经常会有这种需求,例如实现一个物体做椭圆运
阅读全文
摘要:ARCore中提供了根据屏幕坐标、视口大小及view、 project矩阵计算从屏幕坐标发射一条射线的方法,此方法用于3D拾取。 原理: 一、世界坐标系的点P1转化到投影空间得到点P2的公式是:P2 = P1 * viewMatrix * projectMatrix = P1 * viewProjM
阅读全文
摘要:ARCore中四元数差值算法: 其中t的取值范围为[0, 1],当 t = 0 时,结果为a;当t = 1 时,结果为b。
阅读全文
摘要:ARCore中Pose类变换点的算法实现,主要分为两步,分别是平移和旋转。 1. 旋转向量:通过四元数计算旋转后的向量 参数列表:q表示四元数, v是长度为4的float数组,表示待旋转的向量, offsetIn表示第一个坐标值的起始索引, out代表结果向量, offsetOut表示结果向量的三个
阅读全文
摘要:在各大公司面试中,通常会遇到的最基本的算法题之一是单链表的倒序问题。在此仅介绍最常用的且复杂度相对较低的方法。 leetcode中同样也有这道题:Reverse a singly linked list 答案:http://www.programcreek.com/2014/05/leetcode-
阅读全文
摘要:此处总结常见的算法,尽可能的记住.. 1.两点式直线方程:a * x + b * y + c = 0; float a1= centerPostionToUse.y - point1ToUse.y; float b1= point1ToUse.x - centerPostionToUse.x; fl
阅读全文
摘要:(4)平移矩阵: 注:以上矩阵采用的行矩阵,向量采用的是行向量。
阅读全文

浙公网安备 33010602011771号