📜  查询从给定索引到数组中最后一个索引的不同元素的数量(1)

📅  最后修改于: 2023-12-03 15:10:47.518000             🧑  作者: Mango

查询从给定索引到数组中最后一个索引的不同元素的数量

假设有一个整数数组arr,给定一个索引idx,要查询从此索引到该数组的最后一个索引之间有多少个不同的元素。

方法一:使用集合(Set)

使用java.util.Set来存储元素,由于Set保证元素的唯一性,因此最后返回Set的大小即可。

import java.util.HashSet;
import java.util.Set;

public int getUniqueElementsCount(int[] arr, int idx) {
    Set<Integer> set = new HashSet<>();
    for (int i = idx; i < arr.length; i++) {
        set.add(arr[i]);
    }
    return set.size();
}
方法二:使用计数器(Counter)

使用java.util.Map中的计数器实现,Key为元素的值,Value为该元素出现的次数。最后返回Map的大小即可。

import java.util.HashMap;
import java.util.Map;

public int getUniqueElementsCount(int[] arr, int idx) {
    Map<Integer,Integer> map = new HashMap<>();
    for (int i = idx; i < arr.length; i++) {
        if (!map.containsKey(arr[i])) {
            map.put(arr[i], 1);
        } else {
            map.put(arr[i], map.get(arr[i]) + 1);
        }
    }
    return map.size();
}

以上两种方法都可以获得从给定索引到数组中最后一个索引的不同元素的数量,具体选择哪种方式取决于数据的具体情况和算法的效率要求。