识别数组中的重复数字

时间:2014-06-18 03:38:05

标签: java algorithm

enter image description here

我正在处理以下问题。我不是在寻找任何人为我提供解决方案我正在寻找解决这个问题的一些指导。这是我到目前为止所提出的。

我基本上尝试先放一个(围绕重复的值。但是我得到了一个越​​界错误。如果有人能够推动我走向正确的路径来编写一个可以处理这个的小算法,我真的很感激问题

我的代码(正在进行中)

import java.util.Random;

public class Test {

    public static void main(String[] args) {

        int[] values = { 1, 2, 5, 5, 3, 1, 2, 4, 3, 2, 2, 2, 2, 3, 6, 5, 5, 6,
                3, 1 };

        boolean inRun = false;

        for (int i = 0; i < values.length; i++) {

            if (values[i] == values[i + 1] && values[i + 1] < values.length) {
                System.out.print("(");

            }

            System.out.print(values[i]);

        }

    }

}

2 个答案:

答案 0 :(得分:4)

您的错误就在这里,

if (values[i] == values[i + 1] && values[i + 1] < values.length) {

因为i + 1未经测试的时间少于或者顺序正确 -

if (i + 1 < values.length && values[i] == values[i + 1]) {

或者你可以使用,

for (int i = 0; i < values.length - 1; i++) { // the length of values - 1 so we can
                                              // get the next value.

答案 1 :(得分:4)

你需要迭代到所有数组,如果它找到了一对,那么你在while循环中再次迭代它,直到它找到非对。

<强>样品:

 int[] values = { 1, 2, 5, 5, 3, 1, 2, 4, 3, 2, 2, 2, 2, 3, 6, 5, 5, 6, 3, 1 };

 boolean inRun = false;

 for (int i = 0; i < values.length; i++) {

     if (i + 1 < values.length && values[i] == values[i + 1] )
     {
         System.out.print("(");
         while (i + 1 < values.length && values[i] == values[i + 1] )
         {
             System.out.print(values[i++]);
         }
         System.out.print(values[i++]);
         System.out.print(")");
     }
     System.out.print(values[i]);

 }

<强>结果:

12(55)31243(2222)36(55)631