在数组中查找大于或小于1的重复数字

时间:2009-06-29 18:33:26

标签: c# comparison iteration

我需要找出大于或小于1的数字在数组中出现的次数。

例如,如果我有一个数组:

{1,1,1,2,3,-18,45,1} 

此处大于或小于1的数字只出现一次

另一个例子,如果我有一个数组

{1,1,1,2,3,-18,45,1,0}

此处大于或小于1的数字会出现两次,即倒数第二位的数字会出现1,之后会出现0

又一个例子

{1,1,2,3,1,-18,26,1}

这里大于或小于1的数字出现两次,一组是{2,3},一组是{-18,26},而另一组是class Program { static void Main(string[] args) { System.Console.WriteLine(isOneBalanced(new int[] { 1, 1, 1, 2, -18, 45, 1 })); } static int isOneBalanced(int[] a) { foreach(int a1 in a) { } return 0; } } ,因此两次。

到目前为止,我已经能够循环阵列,但我卡住了...如何做到这一点

{{1}}

怎么做才能有人帮助我?

6 个答案:

答案 0 :(得分:2)

foreach循环中的

Iterate through the arraytest each value against 1。如果它小于1,则将num_greater递增1,如果小于1,则将nun_less递增1。

答案 1 :(得分:2)

/* Create variables to be used throughout 
   the process */
int counter = 0;
bool newgroup = true;

/* For each array entry: this loop will
   cycle through our array, accessing one
   item at a time and refer to it as 'a1' */
foreach(int a1 in a) 
{
  /* If 'a1' (our current array entry) is
     absolutely equal to 1, set the value
     of our boolean variable to true */
  if(a1 == 1)   
    newgroup = true;
  else 
  {
    /* Else (meaning, a1 isn't equal to 1), 
       if our variable 'newgroup' is true
       increment our counter variable by 1
       and set our boolean variable to false */
    if(newgroup)
    {
      counter++;    
      newgroup = false;
    }
  }
}    
return counter;

答案 2 :(得分:1)

好吧......简而言之,你想迭代这个循环一次,弄清楚当你在“1”之间时,并增加一个计数器。

还有一两个额外的技巧,但是......一个“技巧”是你应该特别注意跟踪你是否已经增加了特定的一组。如果你的系列是{1,3,5,1},你不想做类似的事情:

1: don't increment 
3: increment
5: increment       // this is bad!
1: don't increment

因为你最终会得到2,而不是1.所以跟踪你是否已经用布尔值增加...称之为“hasIncremented”,你最终会得到一条像:

// if (haveIncremented is false)
    // increment my counter
    // set haveIncremented to true

然后,当然,您需要确保在启动新集时再次将hasIncremented设置为false。当您读入新的“1”时会发生这种情况,现在可以开始新的“设置”。

我正在努力在编码,解释和帮助之间走一条路。希望这有助于帮助整个农场。

祝你好运。

答案 3 :(得分:0)

您需要两个变量。一个是布尔值,用于跟踪您是否在一系列不等于1或-1的数字中。另一个是整数,用于跟踪您遇到的系列总数。

答案 4 :(得分:0)

您需要一个布尔值来确定1是否是前一个值,还是一个整数来计算布尔值设置时没有看到1的次数。

答案 5 :(得分:0)

这可以看作是一个带有一系列输入的有限状态机问题...当你迭代时跟踪你的状态,并根据数组的当前值更新你的状态。例如,其中一个州可能负责增加有界元素计数器。如果你在一张纸上绘制图表,这应该很容易弄清楚......状态的圆圈,以及根据你看到的输入类型链接状态的箭头。

祝你好运!