
java
文章平均质量分 86
csdn_aspnet
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java n条水平平行线与m条垂直平行线相交的平行四边形的数量
该文探讨了计算n条水平平行线与m条垂直平行线相交形成平行四边形数量的方法。核心思路是使用组合数学公式:从n条线选2条的组合数乘以从m条线选2条的组合数(nC2 × mC2)。文章给出了两种Java实现方案:一种是基于动态规划计算二项式系数(时间复杂度O(n²)),另一种是直接应用数学公式n(n-1)/2 × m(m-1)/2(时间复杂度O(1))。当输入n=5,m=5时,两种方法均输出正确结果100。文中包含完整代码示例,并比较了两种方法的时间/空间复杂度。原创 2025-07-08 09:00:19 · 640 阅读 · 0 评论 -
Java 角度扫描(给定半径的圆内可以包含的最大点数)
本文介绍了解决"定半径圆包含最多点数"问题的两种算法。问题要求找出给定平面点集中能被半径为R的圆包含的最大点数(圆周上的点视为包含在内)。朴素算法通过枚举所有点对构造圆并检查包含点数,时间复杂度为O(n³)。更高效的"角度扫描算法"则通过旋转圆并动态维护包含点数,将复杂度优化至O(n²logn)。该算法利用几何关系计算点的进出角度,通过排序和扫描确定最大包含点数。文章详细阐述了算法原理,并提供了Java实现代码,展示了如何通过数学计算和角度处理来高效解决该几何问题。原创 2025-07-01 08:56:44 · 608 阅读 · 0 评论 -
Java 找到最小半径 使得至少k个点位于圆内(Find minimum radius such that atleast k point lie inside the circle)
本文提出了两种算法来寻找包含至少k个点的最小圆半径。第一种方法计算所有点到圆心的欧式距离平方,排序后取第k小的值作为结果,时间复杂度为O(n log n)。第二种方法采用二分查找,在0到最大点间距离范围内搜索最小半径,每次检查是否存在k个点位于圆内,时间复杂度为O(n² log r)。两种方法都给出了Java实现代码示例,适用于以原点为中心的圆,输出结果为半径平方值,其中第二种方法具有更优的时间复杂度。原创 2025-06-24 09:01:33 · 574 阅读 · 0 评论 -
Java 正方形外接圆的面积(Area of a Circumscribed Circle of a Square)
摘要:已知正方形边长a,其外接圆面积可通过公式(PI*a²)/2计算。原理是外接圆半径等于正方形对角线的一半(r=a√2/2),代入圆面积公式πr²即得结果。示例:当a=6时,面积为56.55。该算法具有O(1)时间/空间复杂度,适用于快速计算。原创 2025-06-17 09:11:21 · 591 阅读 · 0 评论 -
Java 求圆面积的程序(Program to find area of a circle)
给定半径 ( r ),圆的面积可以通过公式 ( \text{面积} = \pi \times r^2 ) 计算,结果需精确到小数点后5位。例如,当 ( r = 5 ) 时,面积为 ( 78.53982 );当 ( r = 2 ) 时,面积为 ( 12.56637 )。示例代码使用Java语言,通过 Math.PI 计算面积,并使用 System.out.printf 格式化输出。该算法的时间复杂度和辅助空间均为 ( O(1) )。原创 2025-06-10 09:03:01 · 4183 阅读 · 0 评论 -
Java 检查一条线是否与圆接触或相交(Check if a line touches or intersects a circle)
本文介绍了如何判断一条直线与圆的位置关系。通过计算圆心到直线的垂直距离,并与圆的半径进行比较,可以确定直线与圆是否相交、相切或位于圆外。具体步骤包括:1)使用公式计算直线与圆心的距离;2)将该距离与半径比较,若距离小于半径则相交,等于半径则相切,大于半径则直线在圆外。文章还提供了一个Java代码示例,展示了如何实现这一判断过程。该方法的时间复杂度为O(log(a²+b²)),空间复杂度为O(1)。原创 2025-06-03 09:01:00 · 10394 阅读 · 0 评论 -
Java 程序求圆弧段的面积(Program to find area of a Circular Segment)
2 * r * Sin(X/2)高= OP = r * Cos(X/2)三角形面积= 1/2 * (2 * r * Sin(X/2)) * (r * Cos(X/2))因此线段面积= pi * r 2 * (角度/360) - 1/2 * r 2 * Sin(角度)Cos(X/2) = OP/AO 即 OP = AO * Cos(X/2)Sin(X/2) = AP/AO 即 AP = AO * Sin(X/2)三角形 AOB 的面积= 1/2 * 底边 * 高。在上图中,假设扇区形成的角度 = X,原创 2025-05-27 09:03:44 · 14750 阅读 · 0 评论 -
Java 扇形的面积(Area of a Circular Sector)
在该图中,绿色阴影部分是扇形,“r”是半径,“theta”是角度,如图所示。在这里,我们可以说阴影部分是小扇形,而其他部分是大扇形。“L”是扇形的弧度。圆形扇区或圆形扇区是圆盘上由两个半径和一个圆弧围成的部分,其中较小的区域称为小扇区,较大的区域称为大扇区。扇形面积的计算方法与圆面积的计算方法类似,只需用圆面积乘以扇形的角度即可。扇区 = ( pi * 20*20 ) * ( 145 / 360 )扇区 = ( pi * 9*9 ) * ( 60 / 360 )现在让我们看看计算圆的扇形的公式。原创 2025-05-20 09:06:56 · 14394 阅读 · 0 评论 -
Java 检查两个给定的圆是否相切或相交(Check if two given circles touch or intersect each other)
有两个圆 A 和 B,圆心分别为C1(x1, y1)和C2(x2, y2),半径分别为R1和R2。任务是检查圆 A 和 B 是否相互接触。4、如果C1C2 == R1 + R2:圆 A 和 B 相互接触。1、如果C1C2 <= R1 – R2:圆 B 位于 A 内。2、如果C1C2 <= R2 – R1:圆 A 位于 B 内。3、如果C1C2 < R1 + R2:圆互相相交。5、否则,圆 A 和圆 B 不重叠。输入: C1 = (3, 4)输入: C1 = (2, 3)输入: C1 = (-10,8)原创 2025-05-13 09:05:54 · 9128 阅读 · 0 评论 -
Java 检查某个点是否存在于圆扇区内(Check whether a point exists in circle sector or not)
2、那么角度必须介于 StartingAngle(起始角) 和 EndingAngle(终止角) 之间,并且半径必须介于 0 和您的半径之间。1、使用这个将 x, y 转换为极坐标角度 = atan(y/x);半径 = sqrt(x * x + y * y);在此图像中,起始角度为 0 度,半径为 r,假设彩色区域百分比为 12%,则我们计算结束角度为360/百分比 + 起始角度。我们有一个以原点 (0, 0) 为中心的圆。作为输入,我们给出了圆扇区的起始角度和圆扇区的大小(以百分比表示)。原创 2025-05-06 09:00:42 · 7940 阅读 · 0 评论 -
java 计算圆周率的程序(Program to find Circumference of a Circle)
在圆中,圆边界上的点与圆心的距离相同。圆的周长可以用以下公式简单计算。Circumference(周长) = 31.415。给定圆的半径,编写程序来查找其周长。,pi 的值 = 3.1415。输出:周长 = 12.566。输出:周长 = 50.264。,因为没有占用额外的空间。周长 = 2*pi*r。,其中 r 是圆的半径。,因为没有循环或递归。原创 2025-04-22 09:25:43 · 9205 阅读 · 0 评论 -
Java N*M 网格(表格)中的矩形数量
我们可以说,对于 N*1,将有 N + (N-1) + (n-2) …+ 1 = (N)(N+1)/2 个矩形。对于 N*M 我们有 (M)(M+1)/2 (N)(N+1)/2 = M(M+1)(N)(N+1)/4。N*M 网格可以表示为 (N+1) 条垂直线和 (M+1) 条水平线。如果网格是 3×1,则会有 3 + 2 + 1 = 6 个矩形。所以总矩形的公式将是 M(M+1)(N)(N+1)/4。如果网格是 2×1,则会有 2 + 1 = 3 个矩形。所以 N×2 = 3 (N)(N+1)/2。原创 2025-04-15 09:06:51 · 11465 阅读 · 0 评论 -
Java 计算矩形中的正方形数量(Count number of squares in a rectangle)
对于 m = n = 4,输出 16 + 9 + 4 + 1 [ 16 个大小为 1×1 + 9 个大小为 2×2 + 4 个大小为 3×3 + 1 个大小为 4×4 ]m = n = 3,输出:9 + 4 + 1 [ 9 个大小为 1×1 + 4 个大小为 2×2 + 1 个大小为 3×3 ]当 n 为较大维度时,总方块数 = mx (m+1) x (2m+1)/6 + (nm) xmx (m+1)/2。因此,方格总数为 m(m+1)(2m+1)/6 + (nm)*m(m+1)/2。原创 2025-04-08 10:21:49 · 11516 阅读 · 0 评论 -
Java 检查四个线段是否形成一个矩形(Check if four segments form a rectangle)
首先,我们检查线段的唯一端点总数,如果这些点的数量不等于 4,则线段不能构成矩形。然后我们检查所有点对之间的距离,最多应该有 3 个不同的距离,一个用于对角线,两个用于边,最后我们将检查这三个距离之间的关系,对于构成矩形的线段,这些距离应该满足勾股关系,因为矩形的边和对角线构成直角三角形。如果它们满足上述条件,那么我们将线段构成的多边形标记为矩形,否则不是。输入:segment[] = [(7, 0), (10, 0),输入:segment[] = [(4, 2), (7, 5),这些线段不能组成矩形。原创 2025-04-01 09:05:38 · 10122 阅读 · 0 评论 -
Java 如何检查给定的四个点是否形成一个正方形(How to check if given four points form a square)
要形成正方形,两个点与“p”的距离必须相同,设该距离为 d。与一个点的距离必须不同于 d,并且必须等于 d 的 2 倍。输入: p1 = { 20, 10 }, p2 = { 10, 20 }, p3 = { 20, 20 }, p4 = { 10, 10 }输入: p1 = { 20, 20 }, p2 = { 10, 20 }, p3 = { 20, 20 }, p4 = { 10, 10 }我们还需要检查 q 是否与其他 2 个点的距离相同,并且该距离与 d 相同。a) 由点形成的所有四条边都相同。原创 2025-03-24 09:59:25 · 14100 阅读 · 0 评论 -
Java 使用 Spring Boot 本地集成 DeepSeek
了解如何在本地运行 DeepSeek 的开源模型并将其与 Spring Boot 集成,以构建强大的 AI 应用程序,而无需依赖付费 API人工智能正在以闪电般的速度发展,但运行大型语言模型 (LLM) 往往伴随着对云的依赖、高成本和 API 限制。如果您可以运行强大的人工智能模型,而且是免费的,那会怎样?在本文中,将指导您如何将集成,从而实现,而无需依赖昂贵的基于云的 API。这种设置不仅经济高效,而且速度极快,使其亲身学习 AI 的完美场所。原创 2025-03-20 09:26:04 · 9587 阅读 · 0 评论 -
java 判断两个矩形是否重叠(Find if two rectangles overlap)
我们需要编写一个函数bool doOverlap(l1, r1, l2, r2),如果两个给定的矩形重叠,则返回 true。一种解决方案是逐个选取一个矩形的所有点,然后查看该点是否位于另一个矩形内。2 ) 一个矩形位于另一个矩形左边缘的左侧。注意,一个矩形可以用两个坐标表示,左上角和右下角。1 ) 一个矩形位于另一个矩形的上边缘上方。给定两个矩形,判断这两个矩形是否重叠。l1 :第一个矩形的左上角坐标。r1 :第一个矩形的右下角坐标。l2 :第二个矩形的左上角坐标。r2 :第二个矩形的右下角坐标。原创 2025-03-18 09:01:17 · 8579 阅读 · 0 评论 -
Windows 上安装配置 Maven
Windows 上安装配置 Maven,Maven 是Apache 软件基金会开发的一种流行的开源构建工具,用于同时构建、发布和部署多个项目,以便更好地管理项目。该工具允许开发人员构建和记录生命周期框架。原创 2025-03-14 09:25:26 · 11279 阅读 · 0 评论 -
Windows 下 JDK8 安装配置
如果仅仅想运行 Java 程序(客户),只需要安装独立的 JRE;如果想进行 Java 编程(开发人员),需要安装 JDK,JDK 包里也内置有 JRE,既能开发 Java 也能运行 Java 程序。(在JDK1.5之后的版本,配置Java环境变量的时候我们不再需要配置classpath,只需要配置Java_Home以及path即可!你会发现这样安装的jdk1.8有两个jre,一个自带的,一个刚刚安装的【不用管、知道就好】exe 文件:是可执行的安装程序,适合自动安装,安装时会帮你配置环境变量等。原创 2025-03-14 09:09:42 · 11370 阅读 · 0 评论 -
Windows 下 JDK8 解压版 安装配置
如果想进行 Java 编程(开发人员),需要安装 JDK,JDK 包里也内置有 JRE,既能开发 Java 也能运行 Java 程序。(在JDK1.5之后的版本,配置Java环境变量的时候我们不再需要配置classpath,只需要配置Java_Home以及path即可!描述:适用于 32 位操作系统的 JDK 压缩文件(不需要安装,解压即可使用)exe 文件:是可执行的安装程序,适合自动安装,安装时会帮你配置环境变量等。zip 文件:是压缩包文件,适合手动解压后使用,无需安装,直接运行即可。原创 2025-03-13 09:39:49 · 10602 阅读 · 0 评论 -
java 如何检查给定点是位于多边形内还是外(How to check if a given point lies inside or outside a polygon)
请注意,如果点位于给定多边形的线或与给定多边形的顶点之一相同,则应返回 true。为了处理这个问题,在检查从“p”到极端的线是否相交后,我们检查“p”是否与多边形当前线的顶点共线。如果共线,则检查点“p”是否位于多边形的当前侧,如果位于,则返回 true,否则返回 false。3、如果交点数为奇数或点位于多边形的边缘,则该点位于多边形内部。如果任何条件都不成立,则该点位于多边形外部。给定一个多边形和一个点 ' p ',判断 ' p ' 是否位于多边形内部。O(n),其中 n 是给定多边形的顶点数。原创 2025-03-11 09:05:53 · 11745 阅读 · 0 评论 -
Java 矩形面积和周长的程序(Program for Area And Perimeter Of Rectangle)
矩形面积和周长,矩形的四条边并不像正方形那样长度相等,而是彼此相对的边长度相等。它有四条边和四个相等的角,每个角都是 90 度。矩形的两条对角线长度相等。矩形是平面上的平面图形。原创 2025-03-04 09:07:15 · 11167 阅读 · 0 评论 -
java 检查给定点是否位于矩形内(Check whether a given point lies inside a rectangle or not)
面积 A = [ x1(y2 – y3) + x2(y3 – y1) + x3(y1-y2)]/2 + [ x1(y4 – y3) + x4(y3 – y1) + x3(y1-y4)]/2。检查点是否位于矩形内的一种方法是使用点在多边形内的算法。设四个角的坐标为 A(x1, y1)、B(x2, y2)、C(x3, y3) 和 D(x4, y4)。的面积,即矩形 ABCD 的面积为三角形 ABC 的面积 + 三角形 ACD 的面积。编写一个函数来检查 P 是否位于给定的矩形内。否则,它位于多边形外。原创 2025-02-25 09:04:02 · 11997 阅读 · 0 评论 -
Java 使用余弦定理寻找三角形第三边的程序(Program to find third side of triangle using law of cosines)
具体来说,当你知道三角形两条边的长度和中间的角度时,余弦定理可以用来求出三角形第三边的长度。参见此处了解如何求余弦值。假设 a、b、c 是三角形的边,其中 c 是角 C 对面的边。给定两条边 A、B 和角 C。利用余弦定理求出三角形的第三边。O(log(n)),因为使用内置 sqrt 函数。输入:a = 5,b = 8,c = 49。O(1),因为我们不使用任何额外空间。输出:6.04339。原创 2025-02-18 09:07:13 · 12021 阅读 · 0 评论 -
Java 计算等边三角形外接圆面积的程序(Program to calculate area of Circumcircle of an Equilateral Triangle)
3、等边三角形的外接圆半径等于 (a /?3),其中 'a' 是等边三角形边长。给定等边三角形的边长。我们需要编写一个程序来求出给定等边三角形的外接圆面积。我们还知道等边三角形的外接圆半径 = (等边三角形的边长)/?等边三角形的三条边长度相等,三个内角均为 60 度。2、等边三角形的外接圆由等边三角形的三个顶点构成。1、外接圆的圆心是等边三角形中线的交点。Javascript 程序计算圆的面积。其中a是给定等边三角形的边长。),其中 r 是给定圆的半径。Java 程序计算圆的面积。原创 2025-02-11 09:22:02 · 12700 阅读 · 0 评论 -
Java 程序计算圆的面积(Program to find area of a circle)
方法:使用给定的半径,使用上述公式找到面积:(pi * r * r)并以浮点数打印结果。其中 r 是圆的半径,它可能是浮点数,因为饼图的值为 3.14。可以使用以下公式简单地计算圆的面积。O(1),因为没有占用额外的空间。给定圆的半径,求该圆的面积。原创 2025-02-05 16:00:01 · 8418 阅读 · 0 评论 -
Java 给定欧氏平面中的一组线可以形成的三角形的数量
给定欧氏平面上的 n 条不同直线的集合 L = {l 1 , l 2 , ……求出可以使用集合 L 中的直线形成的三角形的数量。对于特定集合(例如 A),属于该集合的线都是彼此平行的。如果我们有 A、B 和 C,我们可以从每个集合中挑选一条线来得到一个三角形,因为这些线都不会平行。对于大于 3 的子集数量,如果我们有“k”个子集,我们的任务是找到每次取 3 个子集元素数量的总和。子集的形成基于斜率,即特定子集中的所有线具有相同的斜率,即它们彼此平行。三角形的数量 =(从 A 中选取一条线的方式数量)*原创 2025-01-21 09:24:18 · 4591 阅读 · 0 评论 -
Java 程序来寻找三角形的外心(Program to find Circumcenter of a Triangle)
请注意,这里不需要找到三角形的所有三条边。给定三角形的三个点,我们可以轻松找到三角形的边。因此,我们找到 P 和 Q 的中点,并将该值放入标准方程中,我们得到 d 的值。给定 2D 平面中 3 个非共线点 P、Q 和 R,以及它们各自的 x 和 y 坐标,找到三角形的外心。注意:三角形的外心是圆的中心,由三角形的三个顶点形成。2、找到 PQ 和 QR 的垂直平分线(分别称为线 L 和 M)。3、找到直线 L 和 M 的交点作为给定三角形的外心。三角形的外心是三角形所有边的垂直平分线的交点。原创 2025-01-14 09:47:41 · 3909 阅读 · 0 评论 -
Java 两线交点计算程序(Program for Point of Intersection of Two Lines)
为了求解,我们将 1 乘以 b 2并将 2 乘以 b 1这样我们得到 a 1 b 2 x + b 1 b 2 y = c 1 b 2 a 2 b 1 x + b 2 b 1 y = c 2 b 1减去这些我们得到 (a 1 b 2 – a 2 b 1 ) x = c 1 b 2 – c 2 b 1这样我们得到了 x 的值。如果线段由点 (x 1 , y 1 ) 和 (x 2 , y 2 ) 指定,那么要检查 (x, y) 是否在线段上,我们只需检查。输入:A = (1, 1), B = (4, 4)原创 2025-01-07 09:26:44 · 4606 阅读 · 0 评论 -
Java 找出给定三角形的所有角度(Find all angles of a given triangle)
在三角学中,余弦定律(也称为余弦公式或余弦规则)将三角形边的长度与其某个角的余弦联系起来。首先,计算所有边的长度。然后应用上述公式得到所有角度的弧度。然后将角度从弧度转换为度数。给定三角形在二维平面上所有三个顶点的坐标,任务是找到所有三个角度。由于使用内置 sqrt 函数,因此为 O(log(n))为了解决这个问题,我们使用下面的。输入:A = (0, 0),输出:90, 45, 45。原创 2024-12-31 09:16:39 · 9709 阅读 · 0 评论 -
Java 计算三角形内的积分点(Count Integral points inside a Triangle)
(如果 XY 平面上的一个点的两个坐标都是积分的,则该点被称为积分点/格点)。使用以下公式找到顶点之间的积分点:GCD(abs(V1.x-V2.x), abs(V1.y-V2.y)) - 1。解释:点 (1,1) (1,2) (1,3) (2,1) (2,2) 和 (3,1) 是三角形内的积分点。输入: p = (0, 0), q = (0, 5) 和 r = (5,0)O(log(min(a,b))),因为我们使用递归来查找 GCD。O(log(min(a,b))),用于递归堆栈空间。原创 2024-12-24 09:05:44 · 7557 阅读 · 0 评论 -
Java 两点之间的积分点数(Number of Integral Points between Two Points)
如果点为 (0, 2) 和 (4, 0),则位于其上的整数点数只有一个,即 (2, 1)。同样,如果点为 (1, 9) 和 (8, 16),则位于其上的整数点为 6,它们分别为 (2, 10)、(3, 11)、(4, 12)、(5, 13)、(6, 14) 和 (7, 15)。3. 否则,我们可以 使用以下公式找到顶点之间的积分点:GCD(abs(p.x - q.x), abs(p.y - q.y)) - 1。给定两点p (x1, y1) 和q (x2, y2),计算连接它们线上的积分点的数量。原创 2024-12-17 09:09:52 · 3418 阅读 · 0 评论 -
Java 检查给定面积和斜边是否可以构成直角三角形(Check if right triangle possible from given area and hypotenuse)
把a、b、c想象成三根木棍,现在把最长的木棍c用胶水粘牢在桌面上(即看作固定边),把a、b两根木棍的一头固定到c的两个端点上,另一头可以在桌面上随意摆动,显然它们划过的轨迹是一个分别以A、B为圆点,以a、b为半径的圆。这其实很好理解,如果第三边不是最长边,显然其他两边中至少有一边是大于第三边的,故另外两边之和一定大于第三边,所以只需考虑第三边是最长边的情况即可。沿下图斜线将木板切开。我们知道,如果由A可以推出B,由B可以推出A,则A是B的充要条件,所以“任意两边之和大于第三边”是构成三角形的充分必要条件。原创 2024-12-10 09:17:38 · 913 阅读 · 0 评论 -
Java 根据给定的斜边和面积找到直角三角形的所有边(Find all sides of a right angled triangle from given hypotenuse and area)
现在,如果给定的面积小于此最大面积,我们可以对底边的长度进行二分查找,因为增加底边将增加面积,这是一个单调递增函数,可以轻松应用二分查找。在下面的代码中,编写了一种获取直角三角形面积的方法,回想一下,对于直角三角形,面积是 ½*底边*高,可以使用勾股定理根据底边和斜边计算出高。给定直角三角形的斜边和面积,求出其底边和高,如果给定斜边和面积的任何三角形都不可能,则打印“不可能”。和底边相等,因此如果斜边为 H,则。要获得最大面积,底边和高应该相等,斜边 = 5,面积 = 6。斜边 = 5,面积 = 7。原创 2024-12-03 09:11:08 · 795 阅读 · 0 评论 -
java 程序来计算三角形的面积(Program to find area of a triangle)
如果给定三个角的坐标,我们可以对下面的区域 应用鞋带公式。给定一个三角形顶点的坐标,任务是找到该三角形的面积。可以使用以下公式简单地计算 三角形的面积。其中 a、b 和 c 是三角形边长,O(1),因为没有占用额外空间。三角形面积为 17.320508。三角形面积为 6.000000。原创 2024-11-27 09:25:51 · 708 阅读 · 0 评论 -
java 检查给定点是否位于三角形内(Check whether a given point lies inside a triangle or not)
1、计算给定三角形的面积,即上图中三角形ABC的面积。为此,我们首先需要计算三角形ABC的面积。3、c=0.5*||PA x PB||/面积(ABC),其中PB、PC和PA分别是从点P到点B、C和A的向量。如果所有三个重心坐标都是非负的,则点P位于三角形ABC内。面积(ABC)=0.5*||AB x AC||,其中||AB×AC||是向量AB和AC的叉积的大小。设三个角的坐标为(x1,y1)、(x2,y2)和(x3,y3)。给定点P的坐标为(x,y)2、b=0.5*||PC x PA ||/面积(ABC)原创 2024-11-19 09:25:28 · 1023 阅读 · 0 评论 -
java 如果给定了边,请检查三角形是否有效(Check whether triangle is valid or not if sides are given)
如果三角形的两条边之和大于第三条边,则三角形有效。如果三个边是a、b和c,那么应该满足三个条件。给定三条边,检查三角形是否有效。原创 2024-11-12 09:13:35 · 377 阅读 · 0 评论 -
Java Kruskal 最小生成树 (MST) 算法(Kruskal’s Minimum Spanning Tree (MST) Algorithm)
它首先选择最小权重边,最后选择最大权重边。贪婪选择是选择迄今为止构建的 MST 中不会引起循环的最小权重边。4.E 的值最多为 O(V 2 ),因此 O(logV) 和 O(logE) 相同。对于加权、连通、无向图,最小生成树(MST) 或最小权重生成树是权重小于或等于其他所有生成树权重的生成树。由于包含此边会导致循环,因此将其丢弃。选择边 2-3:未形成循环,因此将其包括在内。因此,形成的最小生成树将具有 (9 - 1) = 8 条边。O(V + E),其中 V 是图中顶点的数量,E 是边的数量。原创 2024-11-06 09:14:11 · 827 阅读 · 0 评论 -
java 并查集算法中的按秩联合和路径压缩(Union By Rank and Path Compression in Union-Find Algorithm)
当为元素 x 调用find()时,将返回树的根。路径压缩的思想是将找到的根作为 x 的父节点,这样我们就不必再次遍历所有中间节点。如果 x 是子树的根,则 x 下所有节点的路径(到根)也会压缩。事实证明,最终的摊销时间复杂度为 O(α(n)),其中 α(n) 是逆阿克曼函数,其增长非常稳定(当 n原创 2024-10-31 09:03:01 · 757 阅读 · 0 评论 -
java 不相交集简介(并查集算法)【Introduction to Disjoint Set (Union-Find Algorithm)】
现在我们将两棵树(或集合)合并起来,我们将它们称为左树和右树,在这种情况下,一切都取决于左树(或集合)的大小和右树(或集合)的大小。1、如果左边的等级小于右边的等级,那么最好将左边移到右边的下方,因为这不会改变右边的等级(而将右边移到左边的下方会增加高度)。1、如果左边的尺寸小于右边的尺寸,那么最好将左边移到右边下方,并将右边的尺寸增加左边的尺寸。同样,如果右边的尺寸小于左边的尺寸,那么我们应该将右边移到左边下方,并将左边的尺寸增加右边的尺寸。选择代表的方法有很多种,一种简单的方法是选择最大的索引。原创 2024-10-23 09:05:00 · 848 阅读 · 0 评论