豆包ai打卡第三天

47 阅读1分钟

小S正在帮助她的朋友们建立一个搜索引擎。为了让用户能够更快地找到他们感兴趣的帖子,小S决定使用倒排索引。倒排索引的工作原理是:每个单词都会关联一个帖子ID的列表,这些帖子包含该单词,且ID按从小到大的顺序排列。
例如,单词“夏天”可能出现在帖子1、帖子3和帖子7中,那么这个单词的倒排链就是 [1, 3, 7]。如果用户想同时找到包含“夏天”和“海滩”的帖子,小S需要找出两个倒排链的交集,且将结果按照从大到小的顺序输出。现在,给定两个单词的倒排链数组 a 和 b,请你帮助小S找出同时包含这两个单词的帖子ID,并按从大到小的顺序返回结果。

Java代码为:import java.util.*;

public class Main { public static List solution(List a, List b) { // 使用 HashSet 存储 a 中的元素 Set setA = new HashSet<>(a); // 存储交集结果 List result = new ArrayList<>();

    // 遍历 b,检查元素是否存在于 setA 中
    for (int num : b) {
        if (setA.contains(num)) {
            result.add(num);
        }
    }
    
    // 对结果列表进行排序,按从大到小的顺序
    result.sort((x, y) -> y - x);
    
    return result;
}

public static void main(String[] args) {
    System.out.println(solution(Arrays.asList(1, 2, 3, 7), Arrays.asList(2, 5, 7)).equals(Arrays.asList(7, 2)));
    System.out.println(solution(Arrays.asList(1, 4, 8, 10), Arrays.asList(2, 4, 8, 10)).equals(Arrays.asList(10, 8, 4)));
    System.out.println(solution(Arrays.asList(3, 5, 9), Arrays.asList(1, 4, 6)).equals(Collections.emptyList()));
    System.out.println(solution(Arrays.asList(1, 2, 3), Arrays.asList(1, 2, 3)).equals(Arrays.asList(3, 2, 1)));
}

}