Java笔试题(1)

/**
 * 输入整数n
 * 第一个数组:n个整数,不重复  [0-n]
 * 第二个数组:n个整数,不重复  [0-n]
 * 第一个数组中的2个数在第二个数组中相对顺序颠倒1情况的个数
 *
 * 例:
 * 输入:
 * 7
 * 0 1 3 4 5 6 2
 * 0 3 1 6 4 5 2
 * 输出:
 * 3
 *
 * 分析:
 * (1,3)、(4,6)、(5,6)的顺序在第二个数组中颠倒
 */


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


public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 输入
        int num = sc.nextInt();
        Map<Integer, Integer> map1 = new HashMap<Integer, Integer>();
        for (int i = 0; i < num; i++) {
            map1.put(i, sc.nextInt());
        }
        Map<Integer, Integer> map2 = new HashMap<Integer, Integer>();
        for (int i = 0; i < num; i++) {
            map2.put(sc.nextInt(), i);
        }
        int result = 0;
        // 从第一个数组选出2个数处理
        for (int i = 0; i < num; i++) {
            for (int j = i+1; j < num; j++) {
                Integer m = map1.get(i);
                Integer n = map1.get(j);
                if(-1 == map2.get(m) || -1 == map2.get(n)){
                    continue;
                }
                // m所在数组下标大于n所在数组下标,为T特征
                if(map2.get(m) > map2.get(n)){
                    result++;
                    System.err.println(m+"/"+n);
                }
            }
        }
        System.out.println(result);
    }
}

猜你喜欢

转载自www.cnblogs.com/myibu/p/9688633.html