Leetcode 611有效三角形数

来源:1-5 大厂面试为什么总考算法?

甲骨文_0001

2022-04-25

老师,611题我是用了3重for循环,再依据三角形两边和大于第三边的性质来得到最后结果:
图片描述
然后,我看了老师github的leetcode仓库,611题解法,是二分查找思路,我没有想明白:)
https://github.com/liuyubobobo/Play-Leetcode/blob/master/0501-1000/0611-Valid-Triangle-Number/cpp-0611/main.cpp, 老师,指点下哈~~~,另外我想问下,体系课的KMP小节大概什么时候可以出来,十分期待了~~~~~~~ _

写回答

1回答

liuyubobobo

2022-04-26

一旦确定了三角形的两条边 a 和 b,那么三角形的第三条边一定大于两边之差(的绝对值),小于两边之和。


所以只需要遍历 a 和 b,然后看给出的边中,有多少条边的大小在 |a - b| 和 a + b 之间即可。所以可以在初始对所有边排序,然后使用二分找到第一个大于 |a - b| 的边的索引和最后一个小于 a + b 的边的索引,用这两个索引直接就能求出中间有多少条边。复杂度优化成为了 O(n^2 logn) 的。


==========


小宇宙马上就入托了,我就能录课了。很快了,很快了,黎明前的胜利.... = =


抱歉。


继续加油!:)

1
1
甲骨文_0001
谢谢🙏老师
2022-04-26
共1条回复

玩转算法面试-- Leetcode真题分门别类讲解

课程配套大量BAT面试真题,高频算法题解析,强化训练

7459 学习 · 1159 问题

查看课程