Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在数组中查找连续数字的唯一组合_Java_Numbers - Fatal编程技术网

Java 在数组中查找连续数字的唯一组合

Java 在数组中查找连续数字的唯一组合,java,numbers,Java,Numbers,我有一个已经排序的数组,例如[1,2,3,8,9,10]或[1,1,2,2,3,3]或[1,3,4,5,6,7],我想找到3+个连续数字的唯一组合。这可以在上面的例子中(1,2,3)和(8,9,10),或者(1,2,3)(1,2,3)(1,2,3),或者(3,4,5,6,7) 所以我写了一些对两个连续数字有效的东西,但我不确定如何搜索5个连续数字,然后是4个连续数字,然后是3个。还有,你会如何处理相同的数字 递归在这里有效吗 for (int i = 0; i < 5; i++) {

我有一个已经排序的数组,例如[1,2,3,8,9,10]或[1,1,2,2,3,3]或[1,3,4,5,6,7],我想找到3+个连续数字的唯一组合。这可以在上面的例子中(1,2,3)和(8,9,10),或者(1,2,3)(1,2,3)(1,2,3),或者(3,4,5,6,7)

所以我写了一些对两个连续数字有效的东西,但我不确定如何搜索5个连续数字,然后是4个连续数字,然后是3个。还有,你会如何处理相同的数字

递归在这里有效吗

for (int i = 0; i < 5; i++) {
        for (int j = i+1; j<5; j++) {
            if (array[i] == array[j] - 1) {
                score++;
                break;
            }
        }
    }
for(int i=0;i<5;i++){

对于(int j=i+1;j而言,如果没有重复的数字,这将起作用:

static List<List<Integer>> seqCombos(List<Integer> a)
{
  List<List<Integer>> seqs = new ArrayList<>();
  for(int j=0, i=1; i<=a.size(); i++)
  {
    if(i == a.size() || a.get(i)-1 != a.get(i-1))
    {
      if(i - j >= 3) 
        seqs.add(a.subList(j, i));
      j = i;
    }
  }
  return seqs;
}

如果有重复的数字,事情就会变得复杂得多。我甚至不清楚规则是什么,因为我不知道如何从[1,1,2,2,3]中得到(1,2,3)(1,2,3)?

你想知道这个连续的数字重复了多少次?或者数组是否有连续的序列?如果数组有3+个连续的数字,它可以是2组或1组4个连续的数字或1组5个连续的数字。你能解释一下从[1,1,2,3]中得到(1,2,3)(1,2,3)(1,2,3)(1,2,3)的原因吗?
public static void main(String[] args)
{    
  Integer[][] tests = 
    {
      {1, 2, 3, 8, 9, 10},
      {1, 3, 4, 5, 6, 7},
    };

  for(Integer[] test : tests)
  {
    System.out.println(Arrays.asList(test));
    List<List<Integer>> seqs = seqCombos(Arrays.asList(test));
    for(List<Integer> seq : seqs) 
      System.out.println(seq);
    System.out.println();
  }
}
[1, 2, 3, 8, 9, 10]
[1, 2, 3]
[8, 9, 10]

[1, 3, 4, 5, 6, 7]
[3, 4, 5, 6, 7]