笔试时间:2023年9月15日 秋招  第一题  题目  有一个长度为的正整数序列,小驼想移除掉里面的重复元素,但是小驼想是对于每种元素保留最后出现的那个。  输入描述  输入包括两行:  第一行为序列长度n(1≤n≤50)  第二行为n个数sequence[i] (1≤sequence[i]≤500),以空格分隔。  输出描述  输出消除重复元素之后的序列,以空格分隔,行未无空格  样例输入     8,[10,20,20,99,20,99,100,100]    样例输出     [10,20,99,100]    参考题解  倒序遍历查找,并用set去重。  C++:[此代码未进行大量数据的测试,仅供参考]  #include <iostream>#include <vector>#include <unordered_set>std::vector<int> findQ(int n, std::vector<int> nums) {    std::vector<int> result;    std::unordered_set<int> set;        for (int i = n - 1; i >= 0; i--) {        if (set.find(nums[i]) == set.end()) {            result.push_back(nums[i]);            set.insert(nums[i]);        }    }        // Reverse the result vector    std::reverse(result.begin(), result.end());    return result;}  Java:[此代码未进行大量数据的测试,仅供参考]  public static int[] findQ (int n, int[] nums) {        // write code here        List<Integer> list = new ArrayList<Integer>();        Set<Integer> set = new HashSet<Integer>();        for(int i = n-1;i>=0;i--){            if(!set.contains(nums[i])){                list.add(nums[i]);                set.add(nums[i]);            }        }        int[] result = new int[list.size()];        for (int i = 0; i < list.size(); i++) {            result[list.size()-i-1] = list.get(i);        }        return result;    }  Python:[此代码未进行大量数据的测试,仅供参考]  def findQ(n, nums):    result = []    unique_set = set()        for i in range(n - 1, -1, -1):        if nums[i] not
点赞 4
评论 1
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务