如何在数组中查找超过2的元素的出现

时间:2014-06-07 09:57:57

标签: java arrays

例如:

int[] array={1, 1, 2, 2, 2, 3, 3} 

对数组进行排序,并且数组的每个元素都出现两次以上并返回true 如果int[] array={1, 2, 2, 2, 3, 3}数组已排序但1出现在数组中,则只返回一次假 以下是检查数组是否已排序的代码,如果数组已排序,则返回true,如果不返回false:

public class Second {    
    public static void main(String[] args){  
          int[] array = {7,6,3,4,5};   
        boolean sorted = true;  
        for(int i = 1; i < array.length; i++) {  
            if(array[i-1] > array[i]){  
                  sorted = false;  
                  break;  
            }  
        }  
           System.out.println("Sorted: " + sorted);

    }

我如何在上面的代码中实现我的第二个任务,因为元素的出现次数超过两次应该返回true,否则返回false。

3 个答案:

答案 0 :(得分:2)

该算法同时处理两个要求,只需一次通过数组:

  • 如果数组为空,则返回相应的标志(truefalse
  • 否则(数组不为空):
    • previousValue设置为数组的第一个条目
    • previousRepeats设为false
    • 从第二个条目开始循环遍历数组:
      • 获取当前值value
      • 如果value等于previousValue,请将previousRepeats设置为true并开始下一个循环迭代
      • 否则,如果value小于previousValue,则返回false - 数组未排序
      • 否则,我们知道value大于previousValue
        • 如果previousRepeatsfalse,则返回false - 您的值不会重复
        • 如果没有发生这种情况,请将previousValue设置为value并将previousRepeats设置为false,然后开始下一个循环迭代
    • 当您到达循环结束时,返回previousRepeats标志的值(以处理最终条目)

如果您需要知道错误条目的索引,这里稍作修改(粗体更改):

假设返回值-1表示“一切都好”,返回值0或更多是数组中第一个“坏”条目的索引:

  • 如果数组为空,则返回适合空白数组的任何值(由您决定)
  • 否则(数组不为空):
    • previousValue设置为数组的第一个条目
    • previousRepeats设为false
    • 从第二个条目开始循环遍历数组,跟踪index 中的数组索引
      • 获取当前值value
      • 如果value等于previousValue,请将previousRepeats设置为true并开始下一个循环迭代
      • 否则,如果value小于previousValue,则返回 index - 数组未按此值排序
      • 否则,我们知道value大于previousValue
        • 如果previousRepeatsfalse,则返回 index - 1 - 上一个条目的值不会重复,因此“错误”条目是之前的一个
        • 如果没有发生这种情况,请将previousValue设置为value并将previousRepeats设置为false,然后开始下一个循环迭代
    • 当您到达循环结束时,如果previousRepeatstrue,则返回-1;否则,返回index - 1表示数组中的最终值不重复

答案 1 :(得分:0)

有一个接受两个参数的方法:你的数组和你正在寻找多次出现的int / entry条目。循环遍历数组并简单地跟踪当前数组索引元素==您正在寻找的元素(您的第二个参数)。如果是这样,增加一个计数器。如果计数器超过您想要的值,则返回true。否则在循环后返回false。

这应该可以帮助您自己编写代码!

答案 2 :(得分:0)

编写一个嵌套循环来检查数组中的每个元素,并针对数组中的所有其他元素进行检查,每次遇到相同的值时都会递增计数器。在内循环结束时,检查计数器是否大于或等于2.如果没有中断循环。

set counter to 0
Repeat i till end of array{
    Repeat j till end of array{
        check if array[j] == array[i]{
            increment the counter
        }
    }
    check if counter<2{
        break;
    }
}
check if counter<2{
    return false;
}
else{
    return true;
}