Tarkibga o'tish

5-bo'lim: Massivlar / ro'yxatlar

↑ Mundarijaga qaytish

πŸ“Š Shu bo'limdan boshlab har bir masalada murakkablik ko'rsatilgan: ⏱ vaqt Β· πŸ’Ύ xotira. Murakkablik algoritm darajasida β€” odatda uchala tilda bir xil; tilning built-in funksiyasi boshqacha bo'lsa, alohida eslatiladi.

56. Massiv yig'indisi

⏱ O(n) Β· πŸ’Ύ O(1)

JS

const sum = arr => arr.reduce((a, b) => a + b, 0);
PHP
function sum($arr) {
    return array_sum($arr);
}
Python
def total(arr):
    return sum(arr)

57. 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

const maxOf = arr => Math.max(...arr);
PHP
function maxOf($arr) {
    return max($arr);
}
Python
def max_of(arr):
    return max(arr)

58. Eng kichik element

⏱ O(n) Β· πŸ’Ύ O(1)

JS

const minOf = arr => Math.min(...arr);
PHP
function minOf($arr) {
    return min($arr);
}
Python
def min_of(arr):
    return min(arr)

59. Elementni qidirish (indeks)

⏱ O(n) Β· πŸ’Ύ O(1) β€” topilmasa JS/Python βˆ’1, PHP false.

JS

const indexOf = (arr, x) => arr.indexOf(x);
PHP
function indexOf($arr, $x) {
    return array_search($x, $arr);
}
Python
def index_of(arr, x):
    return arr.index(x) if x in arr else -1

60. Element bormi (contains)

⏱ O(n) Β· πŸ’Ύ O(1)

JS

const contains = (arr, x) => arr.includes(x);
PHP
function contains($arr, $x) {
    return in_array($x, $arr);
}
Python
def contains(arr, x):
    return x in arr

61. Massivni teskari ag'darish

⏱ O(n) Β· πŸ’Ύ O(n)

JS

const reverse = arr => [...arr].reverse();
PHP
function reverse($arr) {
    return array_reverse($arr);
}
Python
def reverse(arr):
    return arr[::-1]

62. 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

const unique = arr => [...new Set(arr)];
PHP
function unique($arr) {
    return array_values(array_unique($arr));
}
Python
def unique(arr):
    return list(dict.fromkeys(arr))

63. Juft sonlarni filtrlash

⏱ O(n) Β· πŸ’Ύ O(n)

JS

const evens = arr => arr.filter(x => x % 2 === 0);
PHP
function evens($arr) {
    return array_values(array_filter($arr, fn($x) => $x % 2 === 0));
}
Python
def evens(arr):
    return [x for x in arr if x % 2 == 0]

64. Har bir elementni 2 ga ko'paytirish (map)

⏱ O(n) Β· πŸ’Ύ O(n)

JS

const double = arr => arr.map(x => x * 2);
PHP
function double($arr) {
    return array_map(fn($x) => $x * 2, $arr);
}
Python
def double(arr):
    return [x * 2 for x in arr]

Quyidagi diagramma massiv indekslari hamda yig'indi (#56) va map (#64) amallari qanday ishlashini ko'rsatadi:

Massiv indeksatsiyasi, yig'indi va map amallari

65. Massiv o'rtachasi

⏱ O(n) Β· πŸ’Ύ O(1)

JS

const avg = arr => arr.reduce((a, b) => a + b, 0) / arr.length;
PHP
function avg($arr) {
    return array_sum($arr) / count($arr);
}
Python
def avg(arr):
    return sum(arr) / len(arr)

66. Manfiy sonlar sonini sanash

⏱ O(n) Β· πŸ’Ύ O(1)

JS

const countNeg = arr => arr.filter(x => x < 0).length;
PHP
function countNeg($arr) {
    return count(array_filter($arr, fn($x) => $x < 0));
}
Python
def count_neg(arr):
    return sum(1 for x in arr if x < 0)

67. 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;
};
PHP
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;
}
Python
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

const sortAsc = arr => [...arr].sort((a, b) => a - b);
PHP
function sortAsc($arr) {
    sort($arr);
    return $arr;
}
Python
def sort_asc(arr):
    return sorted(arr)

69. Ikki massivni birlashtirish (concat)

⏱ O(n + m) Β· πŸ’Ύ O(n + m)

JS

const concat = (a, b) => [...a, ...b];
PHP
function concat($a, $b) {
    return array_merge($a, $b);
}
Python
def concat(a, b):
    return a + b

70. 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));
};
PHP
function intersect($a, $b) {
    return array_values(array_intersect($a, $b));
}
Python
def intersect(a, b):
    return list(set(a) & set(b))

71. Ikki massiv ayirmasi (a βˆ’ b)

⏱ O(n + m) Β· πŸ’Ύ O(n)

JS

const difference = (a, b) => {
  const s = new Set(b);
  return a.filter(x => !s.has(x));
};
PHP
function difference($a, $b) {
    return array_values(array_diff($a, $b));
}
Python
def difference(a, b):
    bset = set(b)
    return [x for x in a if x not in bset]

72. 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;
};
PHP
function chunk($arr, $n) {
    return array_chunk($arr, $n);
}
Python
def chunk(arr, n):
    return [arr[i:i + n] for i in range(0, len(arr), n)]

73. Massivni tekislash (flatten β€” 1 daraja)

⏱ O(n) Β· πŸ’Ύ O(n)

JS

const flatten = arr => arr.flat();
PHP
function flatten($arr) {
    return array_merge(...$arr);
}
Python
def flatten(arr):
    return [x for sub in arr for x in sub]

74. Element chastotasi (count occurrences)

⏱ O(n) Β· πŸ’Ύ O(k) β€” k: noyob elementlar soni.

JS

const freq = arr => {
  const m = {};
  for (const x of arr) m[x] = (m[x] || 0) + 1;
  return m;
};
PHP
function freq($arr) {
    return array_count_values($arr);
}
Python
from collections import Counter

def freq(arr):
    return dict(Counter(arr))

75. Massivni k qadam aylantirish (rotate left)

⏱ O(n) Β· πŸ’Ύ O(n)

JS

const rotate = (arr, k) => {
  k %= arr.length;
  return [...arr.slice(k), ...arr.slice(0, k)];
};
PHP
function rotate($arr, $k) {
    $k %= count($arr);
    return array_merge(array_slice($arr, $k), array_slice($arr, 0, $k));
}
Python
def rotate(arr, k):
    k %= len(arr)
    return arr[k:] + arr[:k]

76. Yo'qolgan sonni topish (1..n)

⏱ O(n) Β· πŸ’Ύ O(1) β€” yig'indi farqi orqali.

JS

const missing = (arr, n) => n * (n + 1) / 2 - arr.reduce((a, b) => a + b, 0);
PHP
function missing($arr, $n) {
    return $n * ($n + 1) / 2 - array_sum($arr);
}
Python
def missing(arr, n):
    return n * (n + 1) // 2 - sum(arr)

77. Juft indeksdagi elementlar

⏱ O(n) Β· πŸ’Ύ O(n)

JS

const evenIdx = arr => arr.filter((_, i) => i % 2 === 0);
PHP
function evenIdx($arr) {
    return array_values(array_filter($arr, fn($k) => $k % 2 === 0, ARRAY_FILTER_USE_KEY));
}
Python
def even_idx(arr):
    return arr[::2]

78. Massiv saralanganmi (is sorted, o'sish)

⏱ O(n) Β· πŸ’Ύ O(1)

JS

const isSorted = arr => arr.every((x, i) => i === 0 || arr[i - 1] <= x);
PHP
function isSorted($arr) {
    for ($i = 1; $i < count($arr); $i++) if ($arr[$i - 1] > $arr[$i]) return false;
    return true;
}
Python
def is_sorted(arr):
    return all(arr[i - 1] <= arr[i] for i in range(1, len(arr)))