例如:
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。
答案 0 :(得分:2)
该算法同时处理两个要求,只需一次通过数组:
true
或false
)previousValue
设置为数组的第一个条目previousRepeats
设为false
value
value
等于previousValue
,请将previousRepeats
设置为true
并开始下一个循环迭代value
小于previousValue
,则返回false
- 数组未排序value
大于previousValue
:
previousRepeats
为false
,则返回false
- 您的值不会重复previousValue
设置为value
并将previousRepeats
设置为false
,然后开始下一个循环迭代previousRepeats
标志的值(以处理最终条目)如果您需要知道错误条目的索引,这里稍作修改(粗体更改):
假设返回值-1
表示“一切都好”,返回值0
或更多是数组中第一个“坏”条目的索引:
previousValue
设置为数组的第一个条目previousRepeats
设为false
index
中的数组索引
value
value
等于previousValue
,请将previousRepeats
设置为true
并开始下一个循环迭代value
小于previousValue
,则返回 index
- 数组未按此值排序 value
大于previousValue
:
previousRepeats
为false
,则返回 index - 1
- 上一个条目的值不会重复,因此“错误”条目是之前的一个强> previousValue
设置为value
并将previousRepeats
设置为false
,然后开始下一个循环迭代previousRepeats
为true
,则返回-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;
}