题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
解题思路:
首先要好好审题,两个只出现一次的,其余都是两次,那么最方便的方式就是转换为字符串,用contains进行比较,存在则移除,不存在则加入。
剑指offer答案:
- //num1,num2分别为长度为1的数组。传出参数
- //将num1[0],num2[0]设置为返回结果
- import java.util.ArrayList;
- public class Solution {
- public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
- ArrayList<String> list = new ArrayList<String>();
- for(int i=0;i<array.length;i++)
- {
- if(list.contains(array[i]+""))
- {
- list.remove(array[i]+"");
- }else{
- list.add(array[i]+"");
- }
- }
- num1[0] = Integer.parseInt(list.get(0));
- num2[0] = Integer.parseInt(list.get(1));
- }
- }
本机测试:
- package pratice715;
- import java.util.ArrayList;
- public class IntOnlyOne715 {
- /*
- * 题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
- */
- public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
- ArrayList<String> list = new ArrayList<String>();
- for(int i=0;i<array.length;i++)
- {
- if(list.contains(array[i]+""))
- {
- list.remove(array[i]+"");
- }else{
- list.add(array[i]+"");
- }
- }
- num1[0] = Integer.parseInt(list.get(0));
- num2[0] = Integer.parseInt(list.get(1));
- }
- public static void main(String[] args) {
- int array[] = {1,2,2,3,4,4,5,5};
- }
- }
扫码关注一起随时随地学习!!!就在洋葱攻城狮,更多精彩,等你来!!