计算:
题目描述:
小明给大家买糖。
员工一共n人(包括小明), 糖一共k种,第i位员工最喜欢糖a_i。
商店举行促销,全场糖买一送一(购买一瓶i,再赠送一瓶i)。
想让所有人(包括小明)都拿到他们最喜欢的糖,需要买几瓶。
第一行两个整数n,k,分别表示员工人数和糖种类数。
第二行n个整数,表示i号员工最喜欢的糖种类是a_i。*/
输入描述:
输出描述:
示例1:
输入:
输出:
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int n = in.nextInt();
int k = in.nextInt();
int[] arr=new int[n];
//标记数组
int[] key=new int[k];
for(int i=0;i<k;i++) {
key[i]=0;
}
for(int i=0;i<n;i++) {
arr[i]=in.nextInt();
for(int j=1;j<=k;j++) {
if(arr[i]==j) {
key[j-1]++;
}
}
}
int res=0;
for(int i=0;i<k;i++) {
if(key[i]%2==0) {
res=res+key[i]/2;
}else {
res=res+key[i]/2+1;
}
}
System.out.println(res);
}
}
}
/*6 2
1 2 1 2 1 2
4*/
第二种代码简洁的:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
int a;
int sum = 0;
Set<Integer> set = new HashSet<Integer>(n);
for (int i = 0; i < n; i++) {
a = sc.nextInt();
if (set.contains(a)){
set.remove(a);
continue;
}
set.add(a);
sum ++;
}
System.out.println(sum);
}
/*6 2
1 2 1 2 1 2
4*/