京东笔试9.17
第二题Monica排列 求最小操作次数,使得前k个元素 不重复并且在 [1,k]之间。 为什么我只能过60%啊,求教。
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int k = in.nextInt();
ArrayList<Integer> nums = new ArrayList<>();
Map<Integer,Integer> map = new HashMap<>();
for(int i=0;i<n;i++){
int num = in.nextInt();
nums.add(num);
}
int res = 0,j=0;
for(int i=0;i<k;i++){
if(!map.containsKey(nums.get(i)) && nums.get(i)<=k){
map.put(nums.get(i),1);
}
else{
j++;
while(j<n){
if(j<=i) {j++; continue;}
int num = nums.get(j);
if(!map.containsKey(num) && num<=k){
res += j-i;
nums.remove(j);
nums.add(i,num);// swap to i => insert into i
break;
}
j++;
}
}
}
System.out.print(res);
} #京东笔试#
拼多多集团-PDD公司福利 817人发布