Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.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
Loops 循环检查数组中是否只有一个元素与其他元素不同_Loops_Iteration - Fatal编程技术网

Loops 循环检查数组中是否只有一个元素与其他元素不同

Loops 循环检查数组中是否只有一个元素与其他元素不同,loops,iteration,Loops,Iteration,假设我有一个Ball对象数组,其中每个球都是红色、蓝色或绿色,Ball.getColor()返回球的颜色。我想检查阵列中除了一个球以外的所有球是否都是相同的颜色。如何在数组的一次遍历中完成此操作?我将构建另一个按颜色计数球的结构 var countArray = [0, 0, 0] // the count of red, blue and green for each ball in ballArray { index = ball.mapColorToIndex() // (red

假设我有一个
Ball
对象数组,其中每个球都是红色、蓝色或绿色,
Ball.getColor()
返回球的颜色。我想检查阵列中除了一个球以外的所有球是否都是相同的颜色。如何在数组的一次遍历中完成此操作?

我将构建另一个按颜色计数球的结构

var countArray = [0, 0, 0]  // the count of red, blue and green
for each ball in ballArray {
    index = ball.mapColorToIndex() // (red->0, green->1, blue->2) 
    countArray[index]++
}
countArray = countArray.sortAscending()
// array must now be of the form 0, 1, n where n is ballArray.count()-1
if (countArray[0]==0 && countArray[1]==1 && countArray[2]>1) {
   // OP condition met
}
这概括了更多的颜色,但最好是按降序排序并检查数组末尾的..0,0,1,n

此外,随着颜色数量的增加,您最终将进行另一次排序数组遍历。(仅使用3种颜色,我们就可以编写O(1)排序)。这可以通过在第一个循环中保留指向您关心的条件的指针来避免(索引的计数为单数,索引的计数大于1)