📌  相关文章
📜  最后出现的数组元素(最后出现是最早的)(1)

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

最后出现的数组元素

在编程中,有时需要找到一个数组中最后出现的元素,即最后出现的元素是数组中最早出现的元素。下面介绍一些在不同编程语言中如何实现这个功能。

Python

在Python中,可以使用list.reverse()方法将列表翻转,然后使用list.index()方法找到想要查找的元素的索引。最后,用原始数组的长度减去所得到的索引即可得到最后出现的元素。

def last_occurrence(arr, elem):
    arr.reverse()
    idx = len(arr) - arr.index(elem) - 1
    return arr[idx]
JavaScript

在JavaScript中,可以使用Array.prototype.lastIndexOf()方法找到想要查找的元素的最后出现位置的索引。最后,用该索引从数组中获取元素即可。

function lastOccurrence(arr, elem) {
    return arr[arr.lastIndexOf(elem)];
}
Java

在Java中,可以通过自己实现一个查找最后出现位置的方法,然后返回相应的元素。

public static int lastIndexOf(int[] arr, int elem) {
    for(int i = arr.length - 1; i >= 0; i--) {
        if(arr[i] == elem) {
            return i;
        }
    }
    return -1;
}

public static int lastOccurrence(int[] arr, int elem) {
    int idx = lastIndexOf(arr, elem);
    return idx == -1 ? -1 : arr[idx];
}
C++

在C++中,可以使用std::find()算法找到想要查找的元素的第一次出现位置的迭代器,然后使用std::reverse_iterator()逆序迭代器将整个数组翻转,最后在逆序迭代器上使用std::find()算法找到想要查找的元素的最后一次出现位置即可。

template<typename Iter, typename T>
Iter findLast(Iter begin, Iter end, const T& elem) {
    Iter result = end;
    while (begin != end) {
        if (*begin == elem) {
            result = begin;
        }
        ++begin;
    }
    return result;
}

int lastOccurrence(vector<int>& arr, int elem) {
    auto it = findLast(arr.begin(), arr.end(), elem);
    if (it != arr.end()) {
        return *(--(reverse_iterator<decltype(it)>(it)));
    }
    return -1;
}
Conclusion

以上就是不同编程语言中如何实现最后出现的数组元素的方法。虽然实现方法不同,但都可以通过翻转数组或手动查找实现。在实际编程过程中,应根据具体情况选择合适的方法和数据结构。