Урок 23. Задача 1.
Primary tabs
Есть массив целых чисел (10 элементов), например:
[1, 3, 2, 1, 3, 2, 2, 4, 0, -5]Задача: вывести на экран все числа, которые встречаются нечетное число раз.
Т.е. в данном случае это:2, 4, 0, -5Решите:
1) любым способом
2) за 1 прочтение массива (сложность меньше или равную N), т.е. по итогам одного чтения массива ответ должен быть готов.
Примечание: давалась как простая разминочная задачка для собеседования в Яндекс.
1 вариант
type arr_N = array[1..10] of integer;
var Arr :array [1..10] of integer = (1, 3, 2, 1, 3, 2, 2, 4, 0, -5);
i, j :integer;
U_arr :arr_N;
begin
i := 1;
j := 2;
while i < high(Arr) do
begin
if j > high(Arr) then
begin
i += 1;
j := i + 1;
end
else
if Arr[i] = Arr[j] then
begin
Arr[j] := Arr[i + 1];
U_arr[i] := 1;
U_arr[i + 1] := 1;
i := i + 2;
j := i;
end;
j += 1;
end;
for i := 1 to 10 do
if U_arr[i] = 0 then
write(Arr[i], ' ');
readln();
end.
2 вариант
var Arr :array [1..10] of integer = (1, 3, 2, 1, 3, 2, 2, 4, 0, -5);
i, j :integer;
begin
i := 1;
j := 2;
while i < high(Arr) do
begin
if j > high(Arr) then
begin
write(Arr[i], ' ');
i += 1;
j := i + 1;
if i = high(Arr) then
write(Arr[i]);
end
else
if Arr[i] = Arr[j] then
begin
Arr[j] := Arr[i + 1];
i := i + 2;
j := i;
end;
j += 1;
end;
readln();
end.
- Log in to post comments
- 481 reads
vedro-compota
Sun, 10/23/2022 - 17:50
Permalink
переделать
переделать
_____________
матфак вгу и остальная классика =)