2017-12-03 166 views
-2

所以我有一个包含正整数的N大小的数组A. 该阵列可能有许多重复,我想找到最短的距离去旅游阵列,并访问阵列中发生的每个数字Java如何告诉我去过一个数组中的所有数字

迭代从A [0]开始的数组的最佳方式是什么上。

到目前为止,我已经想出了将所有数字添加到一个集合中,以便我可以比较,如果我已经在那里。

例如下面的数组中的最短距离访问所有数字是5

Integer[] nums = { 2, 6, 7, 2, 3, 3, 1, 2 }; 

,所以我将它们添加到HashSet

Set<Integer> UniqueNums = new HashSet<>(Arrays.asList(nums)); 

这是我弄糊涂 我知道以下是错误的,它是唯一的psudocode,但我会做一些沿线

int count = 0; 
    for(int i : nums) 
    { 
     if(UniqueNums.contains(i) 
     { 
     count ++; 
     } 

    } 
+2

该循环将返回数组'nums' – Ele

+2

如何让所有的5为最短距离的长度号码? –

+1

'Set'将删除阵列中的所有重复项。所以你会得到一个错误的距离。 – TheQuestioner

回答

1

你可以请试试....这只是一个伪代码。

int count = 0; 
int i =0; 
while(i < nums.lnegth && UniqueNums.size() >0) 
    { 
    UniqueNums.remove (nums[i]); 
    i++; 
    } 

Sysout("minimum length of array containing all unique element from starting " + i); 

我在做什么 - >放置独特的元素后,我迭代数组并开始删除我在nums中访问过的元素。 当我有当时在NUMS访问的所有独特元素“UniqueNums”将是空的,它会终止循环

+0

基本上是的,但我需要重复从索引1然后开始2等等,将连续值存储在一个列表中,然后得到最小的一个。无论如何,谢谢你指出我正确的方向。 –

相关问题