Как можно исправить ошибку в приведенном ниже коде C #, изменив только 1 или 2 строки кода? - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь решить приведенную ниже проблему в C #, на которую я не смог ответить в течение срока во время технического интервью.

  • Приведенный код содержит ошибку, которую можно исправить, исправив не более 2 строк кода.
  • Функция принимает 2 целочисленных массива в качестве параметров.
  • Все целые числа в обоих параметрах всегда будут положительными целыми числами.
  • В каждом параметре массива может быть несколько вхождений одного и того же целого числа.
  • Функция должна возвращать наименьшее положительное целое число, которое существует в обоих массивах.
  • Функция должна возвращать -1, если такого целого числа не существует
public int test(int[] A, int[] B)
{
    int m = A.Length;
    int n = B.Length;
    Array.Sort(A);
    Array.Sort(B);

    int i = 0;
    for (int k = 0; k < m; k++)
    {
        if (i < n - 1 && B[i] < A[k])
            i += 1;
        if (A[k] == B[i])
            return A[k];
    }

    return -1;
}

Я изо всех сил пытаюсь найти решение, которое исправляет только 1-2 строки кода. Я думал, что смогу заменить i += 1; на i += 1; k = 0;, но это, очевидно, добавляет новую строку.

Исходный код будет работать для некоторых входных данных, но не как в примере ниже, потому что мы не хотим увеличивать k, когда B[i] < A[k]:

int[] A = { 3, 4, 5, 6 };
int[] B = { 2, 2, 2, 3 ,5 };

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Учитывая, что вы можете только изменить код и не добавлять в него новые строки, я считаю, что должно работать следующее:

public int test(int[] A, int[] B)
{
  int m = A.Length;
  int n = B.Length;
  Array.Sort(A);
  Array.Sort(B);

  int i = 0;
  for (int k = 0; k < m; k++)
  {
    while (i < n - 1 && B[i] < A[k])
    {
      i += 1;
    }
    if (A[k] == B[i])
      return A[k];
  }
  return -1;
}

Что изменилось, так это то, что , если , который проверял i , теперь , в то время как

Это не самый красивый код, но так как это требования ...

0 голосов
/ 27 марта 2019

Я бы попробовал заменить if на while.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...