Description
WLD likes playing with numbers. One day he is playing with
N
integers. He wants to delete
Input
There are Multiple Cases. (At MOST
100
)
For each case:
The first line contains one integer N(0<N≤100) .
The second line contains
N
integers
The third line contains one integer K(0≤K<N) .
Output
For each case:
Print one integer. It denotes the maximum of different numbers remain after the deletion.
Sample Input
4
1 3 1 2
1
Sample Output
3
Hint
if WLD deletes a 3, the numbers remain is [1,1,2],he’ll get 2 different numbers. if WLD deletes a 2, the numbers remain is [1,1,3],he’ll get 2 different numbers. if WLD deletes a 1, the numbers remain is [1,2,3],he’ll get 3 different numbers.
题意:输出一个n 然后输入一个 长度为n的数组,然后输入一个k ,如果k大于这个数组里面数字重复的数字就输出
System.out.println(n -num- (k - num));//num是数组不同数字的数字
反之直接输出这个数组的不同数字的个数
思路: 贪心 水题
import java.util.Scanner;
public class Main{
private static int n = 0, k = 0, num = 0;
private static int[] array;
private static int[] resArray;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
num = 0;
n = scanner.nextInt();
array = new int[n];
resArray = new int[n];
for (int i = 0; i < n; i++) {
int temp = scanner.nextInt();
if (judge(temp)) {
array[i] = temp;
} else {
resArray[i] = temp;
num++;
}
}
k = scanner.nextInt();
if (k <= num) {
System.out.println(n - num);
} else {
System.out.println(n -num- (k - num));
}
}
scanner.close();
}
private static boolean judge(int x) {
for (int i = 0; i < array.length; i++) {
if (array[i] == x) {
return false;
}
}
return true;
}
}