1、问题
有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。
2、分析:找出只出现一次的数字
有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。
比如说 1 3 2 4 2 1 4 只出现一次的数字就是3
分析过程:
(1) 先调用Arrays.sort()方法进行排序,它是进行升序排序的 1 1 2 2 3 4 4
(2) for循环遍历这个数组,让i从第二个元素开始,与左右两边都进行比较,如果左右两边的数字都与i不一样,
(3)那么这个i就是要找的出现一次的数字,在方法中返回这个数字
3、代码演示
package demomethod03;
import java.util.Arrays;
/**
* 找出只出现一次的数字
* 有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。
* 比如说 1 3 2 4 2 1 4 只出现一次的数字就是3
* 分析过程:
* 先调用Arrays.sort()方法进行排序,它是进行升序排序的 1 1 2 2 3 4 4
* for循环遍历这个数组,让i从第二个元素开始,与左右两边都进行比较,如果左右两边的数字都与i不一样,
* 那么这个i就是要找的出现一次的数字
* 1、先创建一个数组来保存这组数据
* 2、调用方法返回这个要找的数字
* 方法三要素:
* 返回值类型:int
* 方法名: findNum
* 参数列表:int[] nums 数组
*/
public class FindOneNum {
public static void main(String[] args) {
int[] nums = new int[]{1, 3, 2, 4, 2, 1, 4};
int ret = findNum(nums);
System.out.println("只出现一次的数字为" + ret);
}
public static int findNum(int[] nums) {
Arrays.sort(nums);
int onenum=0;
for(int i=1;i<nums.length-2;i++){
if((nums[i]!=nums[i-1])&&(nums[i]!=nums[i+1])){
onenum= nums[i];
}
}
return onenum;
}
}
3、运行结果