arrays - 计算可能的“不相同”三角形的数量
问题描述
我在这里认为相同的是例如一个三角形,例如:3-4-5 和三角形 5-3-4。除了相同的三角形之外,我必须计算可能的三角形的数量。 https://www.geeksforgeeks.org/find-number-of-triangles-possible/ - 我的代码基本上是蛮力方法。我尝试使用 for 从可能的三角形中删除所有相同的三角形,但是使用更大的数组需要很长时间。
我想弄清楚如何更有效地做到这一点,是否可以修改输入数组以使这些相同的三角形甚至不会形成?
解决方案
除非数据集中有重复项,否则您无法获得相同的三角形。
一个建议:您只需要检查两个短边的总和是否大于长边。因此,如果您在开始循环之前对数组进行排序,则只需检查一个组合而不是 3 个。
对它们进行排序后,您可以通过将此条目与此级别的上一个条目进行比较来简化重复检查。所以,if( arr[j] == arr[j-1] ) continue;
和if( arr[k] == arr[k-1] ) continue;
。你知道 j-1 和 k-1 是有效的索引,因为两个循环都不是从 0 开始的。
推荐阅读
- c# - 不能在接口的实现中使用更通用的属性类型?
- database - Spark MapWithState 管理会话状态
- java - android opencv 3.4.1 构建命令失败。未定义的引用
- c++ - 功能在特定时间内消耗墙壁时间
- c# - WPF组合框不以双向更新
- python-3.x - 网页抓取:迭代网站的页面,而无需使用 Python 和请求编辑 url
- python - Choropleth 地图没有为国家着色?
- python - 使用 QComboBox 选择显示的不同小部件集
- javascript - 将 div 彼此相邻对齐 CSS(卡片样式)
- mysql - MySQL 错误与 CREATE TABLE