第一道题,逆序数

送分的,代码如下:
import java.util.Scanner;
public class Solution1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 第一行输入两个正整数n和k
int n = in.nextInt();
int k = in.nextInt();
// 用于记录区间
int[][] space = new int[k][2];
// 用于存放原始及变化后的数据
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = i + 1;
}
for (int i = 0; i < k; i++) {
int l = in.nextInt();
int r = in.nextInt();
space[i][0] = l;
space[i][1] = r;
}
// 初始化完毕
for (int i = 0; i < k; i++) {
inverse(space[i], arr);
}
// 开始计算逆序数个数
int count = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
count++;
}
}
}
// 输出结果
System.out.println(count);
}
// 翻转函数
public static void inverse(int[] perSpace, int[] arr) {
int l = perSpace[0] - 1;
int r = perSpace[1] - 1;
// 对数组arr进行在[l,r]位置上的翻转
int mid = (r - l) / 2 + l;
// 如果r-l为偶数,则mid位置的数字不变,如果为奇数,则mid位置也要交换
for (int i = l, j = r; i < mid; i++, j--) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
if ((r - l) % 2 == 1) {
int temp = arr[mid];
arr[mid] = arr[mid + 1];
arr[mid + 1] = temp;
}
}
}
第二题 吃火锅
想用dfs做,结果没做出来,图的题,还是自己太菜了,拿了0分…