我似乎无法将我的大脑包裹起来,但可以说我得到了一个包含不同元素的数组。如果我想创建另一个仅包含第一个数组中唯一元素的数组,我将如何在不使用 Maps、HashSets 等的情况下执行此操作(不从 java 导入任何其他内容)。
问问题
1140 次
2 回答
3
简单的蛮力算法。
只需(双)循环数组并检查元素是否重复。如果没有将其添加到数组中并继续。O(N^2)
复杂性而不是O(N)
复杂性使用Map
或Set
于 2013-03-20T22:22:40.737 回答
0
请不要对此投票,请参阅 Cratylus 的回答 - 或者更好的是 harpun 的评论。这只是具有 O(n 2 ) 复杂性的解决方案的一些“伪代码” 。
foreach element1 in array:
duplicate = false
foreach element2 in array:
if element 1 == element 2:
duplicate = true
break // out of inner loop
if duplicate:
// duplicate
else:
// not duplicate
当然,这可以在稍高的层次上更清晰地表达出来。“包含”的定义应该是显而易见的。
foreach element in array:
if contains(array, element):
// duplicate
于 2013-03-20T22:30:48.237 回答