欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

剑指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]
    }
}
相关标签: java 数组