时间限制:
1秒 空间限制:32768K 热度指数:299973
本题知识点: 数组
题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
只是让我们来编写这个方法里面的内容,所以我们就要按照人家的要求
//num1,num2分别为长度为1的数组。传出参数 //将num1[0],num2[0]设置为返回结果 public class Solution { public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) { int[] arr = new int[2];//因为最后我们是要把返回值给num1[0],num2[0] 所以定义一个数组长度为2 boolean[] brr = new boolean[array.length]; for (int i = 0; i < brr.length; i++) { brr[i] = true;//因为布尔类型数组不赋值默认为false, } //每次用第一个和它后面的值进行比较(并不与自身比较),值想等的情况下我们把它们就都为false,而且如果它前面和某个值想等,那么我们是需要它为true才能去判断, for (int i = 0; i < array.length; i++) { for (int j = i+1; j < array.length; j++) { if (brr[i]==true) { if (array[i]==array[j]) { brr[i]=false; brr[j]=false; } } } } int ii =0; //到最后有相同的值就会变成false,而true就是我们要的值了,然后放到我们的事先定义好的只有两个长度的数组里 for (int i = 0; i < brr.length; i++) { if (brr[i]==true) { arr[ii++] = array[i]; } } num1[0] = arr[0];//然后我们把第一个正确的值赋给num1[0] num2[0] = arr[1];//然后我们把第二个正确的值赋给num2[0] } }