Requirement
- find all indices in
new int[]{2, 1, 3, 1, 4, 2, 1, 3} - The time complexity is within
O(n)
Example
- The index of 1 are 1, 3, 6
- The index of 2 are 0, 5
- The index of 3 are 2, 7
- The index of 4 are 4
Advertisement
Answer
Yes, it is possible.
Iterate your array and use a key-value paired Data structure to store one item as a key and its indexes as value.
Eventually at the end you would get all items and their corresponding indexes.
now you can either return the key-value paired DS or you can explore it as your requirements.
Basically, you are iterating the array n-number of times where n-is the total elements present in the array. So overall complexity is: O(n)
int [] arr = new int[]{2, 1, 3, 1, 4, 2, 1, 3};
Map<Integer, List<>> hashMap = new HashMap<>();
for(int i=0; i<arr.length; i++){
if(hashMap.contains(arr[i])){
hashMap.put(arr[i], hashMap.get(arr[i]).add(i);
}else{
hash.put(arr[i], new ArrayList<>());
}
}
// at the end you would have a map that contains indexes of every item