问题描述:
我们称一个长度为n的序列为正则序列,当且仅当该序列是一个由1~n组成的排列,即该序列由n个正整数组成,取值在[1,n]范围,且不存在重复的数,同时正则序列不要求排序有一天小团得到了一个长度为n的任
输入描述:
输入第一行仅包含一个正整数n,表示任意序列的长度。(1<=n<=20000)
输入第二行包含n个整数,表示给出的序列,每个数的绝对值都小于10000。
输出描述:
输出仅包含一个整数,表示最少的操作数量。
输入例子1:
5 -1 2 3 10 100
输出例子1:
103
代码:
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
int ans = 0;
for(int i = 0;i < n;i++)
nums[i] = sc.nextInt();
Arrays.sort(nums);
for(int i = 0;i < n;i++){
ans += Math.abs(i + 1 - nums[i]);
}
System.out.println(ans);
}
}