你不可不会的几种移动零的方法

博主头像 前言 本文主要介绍通过「末尾补零」以及「交换零元素与非零元素」的策略来解答此题,供大家参考,希望对大家有所帮助。 移动零 解题思路 根据题意,要把数组中所有 0 移动到数组的末尾,还要保持非零元素的「相对位置」,只需要遍历一遍数组,找出「非零元素」,然后将找出的非零元素替换原数组的元素,原数组中「未 ...

复杂多边形的三角剖分

博主头像 1. 概述 1.1. 多边形分类 需要首先明确的是多边形的分类,第一种是最简单的凸多边形: 凸多边形的每个内角都是锐角或钝角,这种多边形最普通也最常见。如果至少存在一个角是优角(大于180度小于360度),那么就是凹多边形了: 以上多边形有一个共同特征就是由单个环线的边界组成。如果存在一个外环和多个 ...

平面中判断线段与矩形是否相交

博主头像 1. 原理 这个问题的算法思路挺简单的。分成两步来判断: 判断线段的两个端点是否在矩形内,如果两个端点至少有一个在矩形内,说明线段与矩形相交。 如果两个端点都不在矩形内,那么需要再判断线段是否与矩形的对角线是否相交。因为两个端点都不在矩形内的线段有可能会切割矩形的角,这时会与矩形的对角线相交。 那么 ...

数据结构堆

博主头像 引用 1. [堆结构维基百科] - https://zh.wikipedia.org/wiki/%E5%A0%86%E7%A9%8D 2. [堆结构素材] - https://github.com/wangzhione/temp/tree/master/code/struct 目录 1. 简介 2. ...

空间或平面判断两线段相交(求交点)

博主头像 1. 概述 研究了一些空间计算几何的相关算法,现在对《计算几何》这门科学有了更多的认识。以前,解决空间几何问题都是通过解析几何的角度来解决问题的(高中数学知识),虽然解决思路比较直观,但是很多时候都要付出昂贵的代价,比如精度、效率,以及繁复的判断。而计算几何是通过向量来解决空间几何问题的,可以规避这 ...

Prim算法实现最小生成树

博主头像 Prim算法的基本思想是对图G(V,E)设置集合S来存放已被访问的顶点,然后执行n次下面的步骤。 (1)每次从集合V-S中选择与集合S最近的一个顶点,访问u并将其加入集合S,同时把这条集合S最近的边加入最小生成树中。 (2)令顶点u作为集合S与集合V-S连接的接口,优化从u能到达的未访问顶点v与集合 ...

算法中的伪代码语法格式 - 算法实现表达利器

博主头像 伪代码 pseudo-code,是一种非正式的,类似自然语言,用于描述模块结构图的语言。对于熟练不同编程语言的程序员要理解其他编程语言编写的功能时很困难,而伪代码清晰、简单、可读性好,可将整个算法运行过程的结构用接近自然语言的形式描述出来。伪代码不关心软件工程的问题,常忽略数据抽象、模块性、错误处理 ...

剑指 Offer 07. 重建二叉树

博主头像 链接:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/ 标签:树、递归 题目 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder ...

平面中判断点在三角形内算法(重心法)

博主头像 1. 概述 在文章《判断点是否在三角形内》中还提到了一种判断点在三角形内外的算法——重心法。这种算法同样用到了三角形的空间向量方程,但是值得注意的是,这种算法却只能判断平面中点在三角形的内外关系(已知空间向量方程,是可以判断三维空间关系的:空间中判断点在三角形内算法(方程法))。 2. 详论 2.1 ...

C++标准模板库(STL)——stack常见用法详解

博主头像 标准模板库(STL)是程序员定义的数据类型和算法的集合,可供 C++ 程序使用。这些数据类型和算法不是 C++ 语言的一部分,但它们的创建是对内置数据类型的有益补充。如果打算继续在计算机科学领域学习,那么就应该熟悉 STL。本节介绍 STL 数据类型之一:栈(stack)。 ...

C++标准模板库(STL)——queue常见用法详解

博主头像 标准模板库(STL)是程序员定义的数据类型和算法的集合,可供 C++ 程序使用。这些数据类型和算法不是 C++ 语言的一部分,但它们的创建是对内置数据类型的有益补充。如果打算继续在计算机科学领域学习,那么就应该熟悉 STL。本节介绍 STL 数据类型之一:队列(queue)。 ...

算法训练 区间k大数查询(题解)

博主头像 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入格式 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表示询问个数。 接下来m行,每行三个数l,r,K,表示询 ...

空间中判断点在三角形内算法(方程法)

博主头像 1. 概述 三维空间中判断点在三角形内外的算法与平面中有所不同,《平面中判断点在三角形内算法(同向法)》中提到的算法在三维空间中已经无法生效,也很难利用上。一个最简单的思路就是,获取三角形的空间向量方程,判断点是否能让这个空间向量方程成立。 2. 详论 2.1. 原理 在我的另外一篇文章《空间射线与 ...

简述深度优先搜索

博主头像 一、深度优先搜索是什么 在一个求解问题答案的过程中,有几种求解的方法。最为暴力的就是枚举法。枚举法枚举每一个答案即会产生一个状态,这些状态就会构成一棵解答树。当然,对于大多数题目而言,这些状态大多是无用的,这也就决定了枚举法的低效。 那么,难道就没有方法进行优化了吗? 答案是有的。因为枚举法产生了太 ...

平面中判断点在三角形内算法(同向法)

博主头像 1. 概述 平面中判断点在三角形内外有很多中算法,文献1中提到了一种同向法,我认为是比较好的解法,兼顾了效率和可理解性。不过这个算法有两个要注意的地方。 2. 详论 2.1. 原理与实现 同向法的具体算法摘录如下: 关键的实现代码如下: //空间三角形 //按照逆时针顺序插入值并计算法向量 temp ...

123···51>