Я пытаюсь решить приведенную ниже задачу на 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 < A[k])
i += 1;
if (A[k] == B)
return A[k];
}
return -1;
}
Я изо всех сил пытаюсь найти решение, которое исправляет только 1-2 строки кода. Я подумал, что могу заменить i += 1; на i += 1; k = 0; но это, очевидно, добавление новой строки.
Исходный код будет работать для некоторых входных данных, но не как в примере ниже, потому что мы не не хочу увеличивать k, когда B < A[k]:
int[] A = { 3, 4, 5, 6 };
int[] B = { 2, 2, 2, 3 ,5 };
Подробнее здесь: https://stackoverflow.com/questions/553 ... 1-or-2-lin