【问题标题】:How do we count the number of occurrence from left to right and continue until we have consecutive numbers?我们如何从左到右计算出现的次数并继续直到我们有连续的数字?
【发布时间】:2019-05-22 11:31:33
【问题描述】:

所以我写的代码是针对出现次数的。假设在提到的示例部分中,如果我给出一个 {2,1,1,1,3} 的输入数组,它将给我第 2 次出现的计数为 1。现在,我正在努力编写以某种方式编码,以便仅当它从左到右连续时才给我计数。假设,如果我的数组是 {1,1,1,2,0},那么它只会给我 1 作为 3 的总出现次数,但如果它是 {1,0,1,2,1} 或 {0 ,0,1,1,1} 或 {1,1,2,2,1}

    static void Evaluate_V5B(int[] window, int[] PayCombos,)
            {
                int[] Counters1 = new int[3];

                for (int index0 = 0; index0 < 5; index0++)
                {
                    Console.Write("{0} ", window[index0]);
                    int symbol = window[index0];
                    Counters1[symbol]++;
                }
                Console.WriteLine();

    for (int indexJ = 0; indexJ < Counters1.Length; indexJ++)
                {
                    Console.WriteLine("{0}", Counters1[indexJ]);
                }
}

【问题讨论】:

  • 如果有{0, 1, 1, 0, 1, 0}怎么办?数两个1s 还是只有一个?如果有{0, 1, 0, 1, 1, 0}怎么办?
  • 请问:你的意思是要找到给定数的最长的不间断序列,并返回长度吗?例如,对于序列 {1,1,2,2,1},1 和 2 的出现次数都是 2(2x 1 顺序,2x 2 顺序)?
  • @LasseVågsætherKarlsen 我只想要从左到右的计数。假设我正在玩游戏,那么我们将考虑是否从第一次计数开始。所以,我们只会从极端考虑。如果我得到 {0,1,1,1,1},我没有用,所以只有我们从我们得到的数字开始,然后一直持续到很多地方。因此,即使对于 {1,1,0,0,0},我也有 2 个 1。我的 3 个 0 的计数并不重要。同样,在 {2,2,2,0,0} 中,我只需要 2 的计数,因为这很重要。
  • 好的,序列 {1,1,2,2,1} 怎么样,你会从中返回什么?您返回 2x 1 和 2x 2,还是必须问“有多少个 1”?或“多少个 2”,只得到那个数字?
  • 代码怎么知道你对 1 不感兴趣?

标签: c# c#-4.0 logic


【解决方案1】:

这将获取数组中的第一个元素并从左到右返回连续出现的元素。如果该元素在其他任何地方找到,它将返回 0 作为计数:

static void Evaluate(int[] array)
{
    var count = 1;
    var first = array[0];

    for (int i = 1; i < array.Length; i++)
    {
        if(array[i] == first)
        {
            count++;
        }
        else{
            for (int j = i + 1; j < array.Length; j++)
            {
                if(first == array[j]) {
                    count = 0;
                    break;
                }
            }
            break;
        }
    }
    Console.WriteLine($"Count of Number {first} occurrence is {count}");
}

【讨论】:

    【解决方案2】:

    此函数将在数组nums中查找特定数字num连续出现的次数,如果它是第一个数字。

    static int ContinuousOccurrences(int[] nums, int num)
    {
        if (nums[0] == num)
        {
            int continuousOccurrences =
                nums.TakeWhile(x => x == num).Count();
    
            int totalOccurrences =
                nums.Where(x => x == num).Count();
    
            if(continuousOccurrences == totalOccurrences)
            {
                return continuousOccurrences;
            }
            else
            {
                return 0;
            }
    
        }
        return 0;
    }
    

    如果你想知道第一个数字连续出现的次数,这样调用函数:

    ContinuousOccurrences(nums, nums[0])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-04
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      相关资源
      最近更新 更多