我似乎无法将我的大脑包裹起来,但是我可以说我给了一个包含不同元素的数组。如果我想创建另一个只包含第一个数组中唯一元素的数组,那么如果不使用Maps,HashSets等(不从java导入任何其他内容),我将如何进行呢?
答案 0 :(得分:3)
简单的强力算法。
只是(双)循环数组并检查元素是否重复。如果没有将其添加到阵列并继续。使用O(N^2)
或O(N)
Map
复杂度而不是Set
复杂度
答案 1 :(得分: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