Я пытаюсь решить приведенную ниже проблему в 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 };