基础练习 查找整数
时间限制:1.0s 内存限制:256.0MB
问题描述
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入格式
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出格式
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
样例输入
6
1 9 4 8 3 9
9
样例输出
2
数据规模与约定
1 <= n <= 1000。
实现代码
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static Scanner s = new Scanner(System.in);
public static void main(String[] args) {
int n = s.nextInt(); //n个整数
if(n < 1 || n>1000) {
return;
}
int nums[] = new int[n];
for(int i=0; i<n; i++) {
nums[i] = s.nextInt(); //录入数字
}
int target = s.nextInt(); //输入目标匹配
// int count = 0; //结果
// int index = 0;
// Arrays.sort(nums);
for(int i=0; i<n; i++) {
if(nums[i] == target) {
System.out.println(i+1);
return;
}
}
System.out.println(-1);
// int index = 0;
// fun(nums, index, target, count);
}
/*private static void fun (int[] nums, int index, int target, int count) {
if((index = Arrays.binarySearch(nums, target)) != -1){
count ++;
int[] copyNums = Arrays.copyOfRange(nums, (index+1), nums.length);
fun(copyNums, index, target, count);
} else {
System.out.println(count);
return;
}
}*/
}
算法思路
- 这个题,开始我把他想复杂了,我以为是需要查找整数的个数,没想到是找第一次出现的位置
- 我注释掉的代码是用来寻找整数的个数的。这个题目解题方法很多,最简单的方法就是把输入的数组放入一个String对象中,然后用indexOf()方法就可以了。我采用的是遍历数组的方法
- 这个题目有一个可能被大家忽略的地方,就是未找到整数时,需要输出-1,但如果用String对象来做的话就没用必要输出-1,然后indexOf()方法,如果找不到就是返回-1.
- 别忘了程序健壮性原则,应该对题目给出的数据范围做出相应的处理。
注:本程序原理不是很难,所以加的注释不算多,本人一向相信一个观念——不加注释的程序,不叫程序。