5-bo'lim: Massivlar / ro'yxatlar¶
π Shu bo'limdan boshlab har bir masalada murakkablik ko'rsatilgan:
β± vaqt Β· πΎ xotira. Murakkablik algoritm darajasida β odatda uchala tilda bir xil; tilningbuilt-infunksiyasi boshqacha bo'lsa, alohida eslatiladi.
56. Massiv yig'indisi¶
β± O(n) Β· πΎ O(1)
JS
PHP Python57. Eng katta element¶
β± O(n) Β· πΎ O(1)
Eslatma: JS Math.max(...arr) juda katta massivlarda argument limitiga uriladi β bunda arr.reduce((a, b) => Math.max(a, b)) ishlating.
JS
PHP Python58. Eng kichik element¶
β± O(n) Β· πΎ O(1)
JS
PHP Python59. Elementni qidirish (indeks)¶
β± O(n) Β· πΎ O(1) β topilmasa JS/Python β1, PHP false.
JS
PHP Python60. Element bormi (contains)¶
β± O(n) Β· πΎ O(1)
JS
PHP Python61. Massivni teskari ag'darish¶
β± O(n) Β· πΎ O(n)
JS
PHP Python62. Takrorlarni olib tashlash (unique)¶
β± O(n) Β· πΎ O(n)
Eslatma: PHP array_unique ichki saralash tufayli ~O(n log n). Python dict.fromkeys tartibni saqlaydi (set() saqlamaydi).
JS
PHP Python63. Juft sonlarni filtrlash¶
β± O(n) Β· πΎ O(n)
JS
PHP Python64. Har bir elementni 2 ga ko'paytirish (map)¶
β± O(n) Β· πΎ O(n)
JS
PHP PythonQuyidagi diagramma massiv indekslari hamda yig'indi (#56) va map (#64) amallari qanday ishlashini ko'rsatadi:
65. Massiv o'rtachasi¶
β± O(n) Β· πΎ O(1)
JS
PHP Python66. Manfiy sonlar sonini sanash¶
β± O(n) Β· πΎ O(1)
JS
PHP Python67. Ikkinchi eng katta element¶
β± O(n) Β· πΎ O(1) β bitta o'tishda (saralash bilan O(n log n) bo'lardi).
JS
const secondMax = arr => {
let first = -Infinity, second = -Infinity;
for (const x of arr) {
if (x > first) { second = first; first = x; }
else if (x > second && x < first) second = x;
}
return second;
};
function secondMax($arr) {
$first = $second = PHP_INT_MIN;
foreach ($arr as $x) {
if ($x > $first) { $second = $first; $first = $x; }
elseif ($x > $second && $x < $first) $second = $x;
}
return $second;
}
def second_max(arr):
first = second = float("-inf")
for x in arr:
if x > first:
second, first = first, x
elif second < x < first:
second = x
return second
68. Massivni saralash (o'sish bo'yicha)¶
β± O(n log n) Β· πΎ O(n)
Eslatma: JS sort() standart holatda leksikografik β sonlar uchun komparator (a - b) shart.
JS
PHP Python69. Ikki massivni birlashtirish (concat)¶
β± O(n + m) Β· πΎ O(n + m)
JS
PHP Python70. Ikki massiv kesishmasi (intersection)¶
β± O(n + m) Β· πΎ O(n) β Set orqali.
Eslatma: JS/Python Set yondashuvi O(n+m) kafolatlaydi; PHP array_intersect ichki amal (sekinroq bo'lishi mumkin).
JS
const intersect = (a, b) => {
const s = new Set(b);
return [...new Set(a)].filter(x => s.has(x));
};
71. Ikki massiv ayirmasi (a β b)¶
β± O(n + m) Β· πΎ O(n)
JS
PHP Python72. Massivni n ta qismga bo'lish (chunk)¶
β± O(n) Β· πΎ O(n)
JS
const chunk = (arr, n) => {
const out = [];
for (let i = 0; i < arr.length; i += n) out.push(arr.slice(i, i + n));
return out;
};
73. Massivni tekislash (flatten β 1 daraja)¶
β± O(n) Β· πΎ O(n)
JS
PHP Python74. Element chastotasi (count occurrences)¶
β± O(n) Β· πΎ O(k) β k: noyob elementlar soni.
JS
PHP Python75. Massivni k qadam aylantirish (rotate left)¶
β± O(n) Β· πΎ O(n)
JS
PHPfunction rotate($arr, $k) {
$k %= count($arr);
return array_merge(array_slice($arr, $k), array_slice($arr, 0, $k));
}
76. Yo'qolgan sonni topish (1..n)¶
β± O(n) Β· πΎ O(1) β yig'indi farqi orqali.
JS
PHP Python77. Juft indeksdagi elementlar¶
β± O(n) Β· πΎ O(n)
JS
PHPfunction evenIdx($arr) {
return array_values(array_filter($arr, fn($k) => $k % 2 === 0, ARRAY_FILTER_USE_KEY));
}
78. Massiv saralanganmi (is sorted, o'sish)¶
β± O(n) Β· πΎ O(1)
JS
PHPfunction isSorted($arr) {
for ($i = 1; $i < count($arr); $i++) if ($arr[$i - 1] > $arr[$i]) return false;
return true;
}