在数组中查找非重复元素 [英] Finding non duplicate element in an array

查看:151
本文介绍了在数组中查找非重复元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我被困在以下程序中:

我有一个输入整数数组,只有一个非重复数字,比如{1,1,3,2, 3}。输出应该显示非重复元素,即2。

I have an input integer array which has only one non duplicate number, say {1,1,3,2,3}. The output should show the non duplicate element i.e. 2.

到目前为止,我做了以下内容:

So far I did the following:

public class Solution {

    public int singleNumber(int[] arr){
        int size = arr.length;
        int temp = 0;
        int result = 0;
        boolean flag = true;
        int[] arr1 = new int[size];

        for(int i=0;i<size;i++){
            temp = arr[i];
            for(int j=0;j<size;j++){
                if(temp == arr[j]){
                    if(i != j)
                    //System.out.println("Match found for "+temp);
                    flag = false;
                    break;
                }
            }
        }
        return result;
    }

    public static void main(String[] args) {

        int[] a = {1,1,3,2,3};
        Solution sol = new Solution();

        System.out.println("SINGLE NUMBER : "+sol.singleNumber(a));
    }
}

最好限制数组中的解决方案。避免使用集合,地图。

Restricting the solution in array is preferable. Avoid using collections,maps.

推荐答案

因为这几乎肯定是一个学习练习,因为你非常接近完成它,以下是您需要更改以使其工作的内容:

Since this is almost certainly a learning exercise, and because you are very close to completing it right, here are the things that you need to change to make it work:


  • 移动的声明flag inside 外部循环 - 该标志需要设置为 true 每次外部迭代循环,它不会在外循环之外的任何地方使用。

  • 当内循环完成时检查标志 - 如果标志仍为 true ,则表示您找到了唯一的编号;退货。

  • Move the declaration of flag inside the outer loop - the flag needs to be set to true every iteration of the outer loop, and it is not used anywhere outside the outer loop.
  • Check the flag when the inner loop completes - if the flag remains true, you have found a unique number; return it.

这篇关于在数组中查找非重复元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆