小S的倒排索引

61 阅读2分钟

import java.util.*;

public class Main { public static List solution(List a, List b) { // write code here int[] arr = new int[50005];//标记数组 int i = 0; int max = 0; for(i = 0; i < a.size(); i++){ arr[a.get(i)]++; max = max > a.get(i) ? max : a.get(i); } for(i = 0; i < b.size(); i++){ arr[b.get(i)]++; max = max > b.get(i) ? max : b.get(i); } ArrayList arr1 = new ArrayList<>(); for(i = max; i >= 0;i--) { if(arr[i] == 2){ arr1.add(i); } } return arr1; }

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)));
}

} 这段代码主要用于测试一个名为solution的方法。下面是对每一部分的逐步解释:

  1. public static void main(String[] args): 这是Java程序的入口点。main方法是程序启动时执行的第一个方法。

  2. System.out.println(...): 这个语句用于输出括号内的内容到控制台。通常用于调试或显示程序的运行结果。

  3. solution(Arrays.asList(1, 2, 3, 7), Arrays.asList(2, 5, 7)): 这里调用了一个名为solution的方法,传入了两个列表作为参数。每个列表都是通过Arrays.asList()方法创建的。第一个列表是[1, 2, 3, 7],第二个列表是[2, 5, 7]

  4. .equals(Arrays.asList(7, 2)): 这个部分用于比较solution方法的返回值是否等于[7, 2]。如果相等,System.out.println将打印true,否则打印false

  5. 其余的System.out.println语句具有相同的结构,只是传入了不同的参数和期望的输出。例如:

    • 第二行调用是比较solution(Arrays.asList(1, 4, 8, 10), Arrays.asList(2, 4, 8, 10))的结果是否等于[10, 8, 4]
    • 第三行调用是验证solution(Arrays.asList(3, 5, 9), Arrays.asList(1, 4, 6))的结果是否为空列表。
    • 第四行调用是比较solution(Arrays.asList(1, 2, 3), Arrays.asList(1, 2, 3))的结果是否等于[3, 2, 1]

总结来说,这段代码通过调用solution方法来测试不同输入情况下的输出,并将结果与预期值进行比较,用于验证solution方法的正确性。每个System.out.println的结果将显示truefalse,表示测试是否通过。