剑指Offer_编程题_数组中只出现一次的数字
程序员文章站
2022-07-15 12:05:34
...
时间限制:
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]
}
}