问题描述
- 小美有一个纸带,纸带上有一串数字,数字只会是 -1,0或1,已知在任意一处都可能为分割点
- ,要求在分割点前打印的数字是小于0的,在分割点后打印出来的数字是大于0的。即在分割点前
- 大于等于0的数据和分割点后小于等于0的数据都是异常的。分割点是未知的,那么请问在最乐观
- 的情况下至少有多少个数据是异常的。
- 输入第一行包含一个正整数n,表示小美在纸带上打印的数字数量。
- 输入第二行包含n个整数,即小美在纸带上打印的数字,中间用空格隔开。
- 输出仅包含一个整数,表示至少有多少个实验数据是异常的。
- 输入:
- 5
- 0 -1 1 1 -1
- 输出:
- 2
import java.util.Scanner;
public class Main1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
int num0=0,num2=0;
for (int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
if(nums[i]==0){
num0++;
} else if (nums[i] == -1) {
num2++;
}
}
int count1=0,count2=0;
int res=num0+num2;
for (int i = 0; i < n; i++) {
if (nums[i] == 1) {
count1++;
} else if(nums[i]==-1){
count2++;
}
res = Math.min(num0 + count1 + num2 - count2, res);
}
System.out.println(res);
}
}
原因分析:
提示:记录每种数字个数,从左往右依次将每一位置看作分割点进行计算