网易首页 > 网易号 > 正文 申请入驻

2026-07-29:三角形的内角度数。用go语言,输入是一个包含三个正整数的数组,代表三条边的长度。需要判断这三条边能否组成一个面积大于零

0
分享至

2026-07-29:三角形的内角度数。用go语言,输入是一个包含三个正整数的数组,代表三条边的长度。需要判断这三条边能否组成一个面积大于零的三角形。如果可以,就计算出这个三角形的三个内角,单位用度,并把它们从小到大排好,作为三个浮点数返回;如果不能组成这样的三角形,就返回一个空数组。最终结果的精度要求是,与标准答案的误差不超过 10⁻⁵ 即可。

sides.length == 3。

1 <= sides[i] <= 1000。

输入: sides = [3,4,5]。

输出: [36.86990,53.13010,90.00000]。

解释:

边长为 3、4、5 时,可以构成一个直角三角形。该三角形的三个内角分别约为 36.869897646°、53.130102354° 和 90°。

题目来自力扣3899。

大体过程 第一步:边长排序

  • • 接收一个包含三个正整数的数组

  • • 将这三个数按照从小到大进行排序

  • • 排序后得到 a ≤ b ≤ c,其中 a 是最短边,c 是最长边

第二步:三角形可行性判断
  • • 根据三角形的基本性质:任意两边之和大于第三边

  • • 由于已经排序,只需要检查最短的两条边之和是否大于最长边,即a + b > c

  • • 如果a + b ≤ c,说明无法构成三角形(退化或不存在),直接返回空数组

  • • 如果a + b > c,继续执行后续计算

第三步:计算三个内角
  • • 使用余弦定理计算角度,余弦定理公式:cos(A) = (b² + c² - a²) / (2bc),其中 A 是边 a 所对的角

  • • 先计算角 A(最短边 a 对应的角):

    • • 分子:b² + c² - a²

    • • 分母:2 × b × c

    • • 将分子除以分母,得到余弦值

    • • 用反余弦函数acos得到弧度值

    • • 乘以180/π转换为度数

  • • 再计算角 B(中间边 b 对应的角):

    • • 分子:a² + c² - b²

    • • 分母:2 × a × c

    • • 同样用反余弦函数转换后乘以180/π

  • • 角 C(最长边 c 对应的角)无需再用余弦定理:

    • • 因为三角形内角和为 180 度

    • • 所以C = 180 - A - B

第四步:返回结果
  • • 按照[A, B, C]的顺序返回三个角度

  • • 因为排序保证了 a ≤ b ≤ c,根据"大边对大角"原理,对应的角度满足 A ≤ B ≤ C,天然就是非递减顺序

  • • 返回包含三个浮点数的数组

具体示例(边长为 3、4、5)
  1. 1.排序:得到 a=3, b=4, c=5

  2. 2.判断:3+4=7 > 5,可以构成三角形

  3. 3.计算角 A(3 对应的角):

  • • cos(A) = (4² + 5² - 3²) / (2×4×5) = (16+25-9)/40 = 32/40 = 0.8

  • • A = arccos(0.8) × 180/π ≈ 36.869897646°

4.计算角 B(4 对应的角):

  • • cos(B) = (3² + 5² - 4²) / (2×3×5) = (9+25-16)/30 = 18/30 = 0.6

  • • B = arccos(0.6) × 180/π ≈ 53.130102354°

5.计算角 C:C = 180 - 36.869897646 - 53.130102354 = 90°

6.返回:[36.869897646, 53.130102354, 90]

复杂度分析

  • •时间复杂度:O(1)

    • • 排序操作对固定 3 个元素进行,可视为常数时间

    • • 余弦定理计算也是常数次数学运算

    • • 整体不随输入规模变化

  • •额外空间复杂度:O(1)

    • • 只使用了少量固定数量的变量(a、b、c、A、B、C 等)

    • • 返回的数组大小固定为 3

    • • 没有使用随输入规模增长的额外数据结构

Go完整代码如下:

package main

import (
"fmt"
"math"
"slices"
)

func internalAngles(sides []int) []float64 {
slices.Sort(sides)
a, b, c := sides[0], sides[1], sides[2]
if a+b <= c {
return nil
}

const rad = 180 / math.Pi
A := math.Acos(float64(b*b+c*c-a*a)/float64(b*c*2)) * rad
B := math.Acos(float64(a*a+c*c-b*b)/float64(a*c*2)) * rad
return []float64{A, B, 180 - A - B} // 小边对小角
}

func main() {
sides := []int{3, 4, 5}
result := internalAngles(sides)
fmt.Println(result)
}

Python完整代码如下:

# -*-coding:utf-8-*-

import math

def internal_angles(sides):
# 对边长排序
sides.sort()
a, b, c = sides[0], sides[1], sides[2]
# 三角形不等式:两边之和必须大于第三边
if a + b <= c:
return []
# 弧度转角度系数
rad_to_deg = 180.0 / math.pi
# 使用余弦定理计算角 A(对应边 a)和角 B(对应边 b)
# 注意:因为 a <= b <= c,所以 A <= B <= C,天然满足非递减顺序
A = math.acos((b*b + c*c - a*a) / (2.0 * b * c)) * rad_to_deg
B = math.acos((a*a + c*c - b*b) / (2.0 * a * c)) * rad_to_deg
# 第三个角通过三角形内角和 180 度得到
C = 180.0 - A - B
return [A, B, C]

# 测试
if __name__ == "__main__":
sides = [3, 4, 5]
result = internal_angles(sides)
print(result)

C++完整代码如下:

#include  

#include
#include
#include

std::vector internalAngles(std::vector sides) {
// 对边长排序
std::sort(sides.begin(), sides.end());
int a = sides[0], b = sides[1], c = sides[2];

// 三角形不等式:两边之和必须大于第三边
if (a + b <= c) {
return {};
}

// 弧度转角度系数
const double rad_to_deg = 180.0 / M_PI;

// 使用余弦定理计算角 A(对应边 a)和角 B(对应边 b)
// 因为 a <= b <= c,所以 A <= B <= C,天然满足非递减顺序
double A = acos((b*b + c*c - a*a) / (2.0 * b * c)) * rad_to_deg;
double B = acos((a*a + c*c - b*b) / (2.0 * a * c)) * rad_to_deg;

// 第三个角通过三角形内角和 180 度得到
double C = 180.0 - A - B;

return {A, B, C};
}

int main() {
std::vector sides = {3, 4, 5};
std::vector result = internalAngles(sides);

// 输出结果
for (double angle : result) {
std::cout << angle << " ";
}
std::cout << std::endl;

return 0;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
3大新援已有两个水货!曼联高层承认夏窗引援水准欠佳

3大新援已有两个水货!曼联高层承认夏窗引援水准欠佳

球事百科吖
2026-10-13 04:22:45
“陈皮骗局”爆火:刺痛了多少中国人...

“陈皮骗局”爆火:刺痛了多少中国人...

温伯陵的烟火人间
2026-10-12 21:38:16
欧美港口:拆掉中国设备!工人拆完,领导:我让你拆的是,Logo

欧美港口:拆掉中国设备!工人拆完,领导:我让你拆的是,Logo

星落山间
2026-09-07 00:46:19
6-4到4-2!海港火力全开,蒋光太缺阵后防吃紧,大田反击暗藏杀机

6-4到4-2!海港火力全开,蒋光太缺阵后防吃紧,大田反击暗藏杀机

汪星人哟
2026-10-13 08:07:48
开播一天拿下热度冠军!观众盛赞:首集就欲罢不能

开播一天拿下热度冠军!观众盛赞:首集就欲罢不能

小椰的奶奶
2026-10-13 02:16:05
单年暴跌60万辆后绝地反击,广州这次押上全部家底

单年暴跌60万辆后绝地反击,广州这次押上全部家底

音乐时光的娱乐
2026-10-12 16:21:11
出战4分钟0分5犯2失误!辽篮潜力中锋被打回原形:这状态咋接班韩德君

出战4分钟0分5犯2失误!辽篮潜力中锋被打回原形:这状态咋接班韩德君

篮球快餐车
2026-10-13 05:49:10
2026年值得考虑的7款富士相机

2026年值得考虑的7款富士相机

固件更新中
2026-10-12 06:56:09
许志安演唱会落幕,郑秀文后台深情相拥:人生没有放弃自己的理由

许志安演唱会落幕,郑秀文后台深情相拥:人生没有放弃自己的理由

吃青菜长高
2026-10-12 13:04:35
我才65岁,儿子就要送我去养老院,我无奈同意,临行前去银行注销了银行卡,入住7天后,儿子跑来找我:妈,我这个月的房贷怎么逾期了?

我才65岁,儿子就要送我去养老院,我无奈同意,临行前去银行注销了银行卡,入住7天后,儿子跑来找我:妈,我这个月的房贷怎么逾期了?

蝉吟槐蕊
2026-10-12 23:23:58
吃饭决定寿命?医生发现:活过85岁的老人,吃饭一般都有4特点

吃饭决定寿命?医生发现:活过85岁的老人,吃饭一般都有4特点

医学原创故事会
2026-10-11 23:26:04
广东3消息!杜锋重返宏远,胡明轩官宣担任队长,三外援首秀时间确定

广东3消息!杜锋重返宏远,胡明轩官宣担任队长,三外援首秀时间确定

多特体育说
2026-10-12 20:37:40
拜仁豪掷天价挖角!巴萨核心坐冷板凳!弗里克或逼走诺坎普大将

拜仁豪掷天价挖角!巴萨核心坐冷板凳!弗里克或逼走诺坎普大将

奶盖熊本熊
2026-10-13 07:43:00
花800块跑了900亿Token:Kimi做设计、GLM干活、DeepSeek审计、豆包管图片,这套国产AI组合到底值不值

花800块跑了900亿Token:Kimi做设计、GLM干活、DeepSeek审计、豆包管图片,这套国产AI组合到底值不值

阿鑫讲ai
2026-10-12 23:46:16
蔡国庆每月给弟弟蔡军发2万工资,发了20年,一共480万,条件就一个:在家全职照顾得阿尔茨海默症的母亲

蔡国庆每月给弟弟蔡军发2万工资,发了20年,一共480万,条件就一个:在家全职照顾得阿尔茨海默症的母亲

LULU生活家
2026-09-02 19:51:47
智能电插座遭黑客攻击致多地鱼友“全缸覆灭”?厂商:部分产品被攻击,已报警

智能电插座遭黑客攻击致多地鱼友“全缸覆灭”?厂商:部分产品被攻击,已报警

封面新闻
2026-10-12 10:05:14
曾经“红极一时”,如今“跌下神坛”的3家服装品牌,你买过吗?

曾经“红极一时”,如今“跌下神坛”的3家服装品牌,你买过吗?

李健政观察
2026-09-04 00:22:56
灵活就业想靠单位缴社保,就算不要工资,也不是这么简单

灵活就业想靠单位缴社保,就算不要工资,也不是这么简单

娱乐圈见解说
2026-10-13 03:13:35
放进冰箱变“毒药”,这6种食物千万不要放冰箱冷藏,尤其是第6种

放进冰箱变“毒药”,这6种食物千万不要放冰箱冷藏,尤其是第6种

神牛
2026-10-11 16:13:59
海蒂·克鲁姆泳池边半裸晒照!只穿丁字裤,配文洛杉矶很热

海蒂·克鲁姆泳池边半裸晒照!只穿丁字裤,配文洛杉矶很热

草莓解说体育
2026-10-12 03:50:51
2026-10-13 09:35:00
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1511文章数 83关注度
往期回顾 全部

科技要闻

尊界:10月底确认制动踏板支架升级方案

头条要闻

牛弹琴:美国突然转向俄罗斯一边 欧洲看得目瞪口呆

头条要闻

牛弹琴:美国突然转向俄罗斯一边 欧洲看得目瞪口呆

体育要闻

一周吃6顿披萨的胖子,也能单防姆巴佩?

娱乐要闻

张艺谋身体状况曝光 陈婷不再顾及体面

财经要闻

险资“追涨杀跌”致科技股持续回调?

汽车要闻

小鹏G9L巴黎车展全球上市 法国市场售价74990欧元起

态度原创

手机
数码
教育
本地
公开课

手机要闻

一加磁吸冰冰卡Mini发布:比银行卡还小 手机供电直接制冷

数码要闻

首发1299元 米家洗衣机双筒1kg发布:80℃高温煮洗、99.99%除菌

教育要闻

4个正在崛起的专业,市场需求旺盛;另有4个难度拉满,挂科率高的专业,都是什么情况?

本地新闻

踏访沙县第一村,寻国民小吃本源

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版