āĻ¯āĻāĻ¨ āĻāĻŽāĻŋ āĻ
ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽā§āĻ° āĻāĻ°ā§āĻŽāĻā§āĻˇāĻŽāĻ¤āĻž āĻ
āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻāĻŋāĻ˛āĻžāĻŽ, āĻ¤āĻāĻ¨ āĻāĻŽāĻŋ āĻāĻāĻŋ āĻā§āĻĄāĻŧā§ āĻāĻ¸ā§āĻāĻŋ
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻŋāĻĄāĻŋāĻāĻāĻŋāĻ° āĻāĻ āĻ§āĻ°āĻŖā§āĻ° āĻ
āĻ¨ā§āĻˇāĻā§āĻāĨ¤ āĻāĻāĻŋāĻ¤ā§ āĻāĻŽāĻŋ āĻĻā§āĻāĻžāĻ¨ā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻāĻĒāĻ° āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻŋ, āĻāĻŦāĻ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻāĻŽāĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ
ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽā§āĻ° āĻ¸ā§āĻā§āĻˇā§āĻŽāĻ¤āĻžāĻ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻŽāĻ°āĻž āĻŽāĻ¨ā§ āĻāĻ°āĻŋāĻ¯āĻŧā§ āĻĻāĻŋāĻā§āĻāĻŋ: "Habr"-āĻāĻ° āĻ¸āĻāĻ˛ āĻĒāĻžāĻ āĻāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ - "Habr" āĻĒā§āĻ°āĻāĻžāĻ°āĻŽā§āĻ˛āĻ āĻā§āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¯ā§āĻā§āĻ¨ā§ Skillbox āĻā§āĻ°ā§āĻ¸ā§ āĻ¨āĻĨāĻŋāĻā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ 10 āĻ°ā§āĻŦā§āĻ˛ āĻāĻžāĻĄāĻŧāĨ¤
Skillbox āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°ā§: āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ āĻā§āĻ°ā§āĻ¸
"āĻŽā§āĻŦāĻžāĻāĻ˛ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ° āĻĒā§āĻ°ā§" .
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻāĻ āĻ¨
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ āĻ°ā§āĻĄāĻžāĻ°āĻā§āĻ¤ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŽāĻžāĻ¨ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻāĻŋāĻā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻ¯āĻž āĻ¸āĻ¤ā§āĻ¯ āĻŦāĻž āĻŽāĻŋāĻĨā§āĻ¯āĻž āĻĢā§āĻ°āĻ¤ āĻĻā§āĻ¯āĻŧ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻ¯ā§āĻā§āĻ¨ā§ āĻĻā§āĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻžāĻ° āĻ¯ā§āĻāĻĢāĻ˛ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻŽāĻžāĻ¨ā§āĻ° āĻ¸āĻŽāĻžāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŋāĻ¨āĻž āĻ¤āĻžāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§āĨ¤
āĻ āĻ¨ā§āĻ¯ āĻāĻĨāĻžāĻ¯āĻŧ, āĻ ā§āĻ¯āĻžāĻ°ā§āĻ¤ā§ āĻāĻŋ āĻĻā§āĻāĻŋ āĻĒā§āĻ°ā§āĻŖāĻ¸āĻāĻā§āĻ¯āĻž āĻāĻā§, x āĻāĻŦāĻ y, āĻ¯ā§āĻā§āĻ˛āĻŋ āĻāĻāĻ¸āĻžāĻĨā§ āĻ¯ā§āĻ āĻāĻ°āĻ˛ā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŽāĻžāĻ¨ āĻ¸āĻŽāĻžāĻ¨ āĻšāĻ¯āĻŧ?
āĻāĻĻāĻžāĻšāĻ°āĻŖ A
āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§ [1, 2, 4, 9] āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻŽāĻžāĻ¨ 8 āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻŽāĻŋāĻĨā§āĻ¯āĻž āĻĢā§āĻ°āĻ¤ āĻĻā§āĻŦā§ āĻāĻžāĻ°āĻŖ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ¤ā§ āĻĻā§āĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻž 8 āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¨āĻžāĨ¤
āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦāĻŋ
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§ [1, 2, 4, 4] āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻŽāĻžāĻ¨ 8 āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻĢāĻžāĻāĻļāĻ¨āĻāĻŋ āĻ¸āĻ¤ā§āĻ¯ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤ āĻāĻžāĻ°āĻŖ 4 + 4 = 8āĨ¤
āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ 1: āĻŦā§āĻ°ā§āĻ āĻĢā§āĻ°ā§āĻ¸
āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž: O(N²)āĨ¤
āĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻāĻŋāĻ˛āĻ¤āĻž: O(1)āĨ¤
āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻ āĻ āĻ°ā§āĻĨ āĻšāĻ˛ āĻ¨ā§āĻ¸ā§āĻā§āĻĄ āĻ˛ā§āĻĒāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻā§āĻĄāĻŧāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĨ¤
const findSum = (arr, val) => {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length; j++) {
if (i !== j && arr[i] + arr[j] === val) {
return true;
};
};
};
return false;
};
āĻāĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻ¨āĻ¯āĻŧ āĻāĻžāĻ°āĻŖ āĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĻā§āĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻ¯ā§āĻāĻĢāĻ˛ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§ āĻāĻŦāĻ āĻ¸ā§āĻāĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻā§āĻĄāĻŧāĻžāĻā§ āĻĻā§āĻāĻŦāĻžāĻ° āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°ā§āĨ¤ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¯āĻāĻ¨ i = 1 āĻāĻŦāĻ j = 2 āĻāĻ¸āĻ˛ā§ i = 2 āĻāĻŦāĻ j = 1 āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻŽāĻ¤ā§ āĻāĻāĻ, āĻ¤āĻŦā§ āĻāĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻ¯āĻŧ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻŋ)āĨ¤
āĻāĻžāĻ°āĻŖ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻāĻŋ āĻ˛ā§āĻĒā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨ā§āĻ¸ā§āĻā§āĻĄā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻĄāĻŧāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻāĻŋ O(N²) āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻĻā§āĻŦāĻŋāĻāĻžāĻ¤ā§āĨ¤
āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ 2: āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨
āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž: O(Nlog(N))āĨ¤
āĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻāĻŋāĻ˛āĻ¤āĻž: O(1).
āĻ¯ā§āĻšā§āĻ¤ā§ āĻ ā§āĻ¯āĻžāĻ°ā§āĻā§āĻ˛āĻŋ āĻ āĻ°ā§āĻĄāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻāĻŽāĻ°āĻž āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻ āĻ°ā§āĻĄāĻžāĻ° āĻāĻ°āĻž āĻ ā§āĻ¯āĻžāĻ°ā§āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽāĨ¤ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻāĻ˛āĻŽāĻžāĻ¨ āĻ¸āĻŽāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§āĻā§ O(log(N))āĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻ¨āĻ āĻ āĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŽāĻžāĻ¨ā§āĻ° āĻŦāĻŋāĻĒāĻ°ā§āĻ¤ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ˛ā§āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻĻā§āĻāĻ¤ā§ āĻā§āĻŽāĻ¨ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¤āĻž āĻāĻāĻžāĻ¨ā§āĨ¤ āĻāĻŋāĻ¨āĻŋāĻ¸āĻā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋāĨ¤ āĻāĻŦāĻ āĻāĻāĻžāĻĄāĻŧāĻžāĻ removeIndex() āĻĢāĻžāĻāĻļāĻ¨, āĻ¯āĻž āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ¸ā§āĻāĻ āĻŦāĻŋāĻ¯āĻŧā§āĻ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤
const findSum = (arr, val) => {
for (let i = 0; i < arr.length; i++){
if (binarySearch(removeIndex(arr, i), val - arr[i])) {
return true;
}
};
return false;
};
const removeIndex = (arr, i) => {
return arr.slice(0, i).concat(arr.slice(i + 1, arr.length));
};
const binarySearch = (arr, val) => {
let start = 0;
let end = arr.length - 1;
let pivot = Math.floor(arr.length / 2);
while (start < end) {
if (val < arr[pivot]) {
end = pivot - 1;
} else if (val > arr[pivot]) {
start = pivot + 1;
};
pivot = Math.floor((start + end) / 2);
if (arr[pivot] === val) {
return true;
}
};
return false;
};
āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻ¸ā§āĻā§ āĻĨā§āĻā§ āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧ [0]āĨ¤ āĻāĻāĻŋ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻĒā§āĻ°āĻĨāĻŽ āĻ¸ā§āĻāĻāĻāĻŋ āĻŦāĻžāĻĻ āĻĻāĻŋāĻ¯āĻŧā§ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻāĻŦāĻ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯ā§ āĻĒāĻāĻ¨ā§āĻĻāĻ¸āĻ āĻ¯ā§āĻāĻĢāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ¤ā§ āĻ āĻŦāĻļāĻŋāĻˇā§āĻ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŋāĻ¨āĻžāĨ¤ āĻāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŦāĻžāĻ° āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤
āĻĢāĻ° āĻ˛ā§āĻĒā§āĻ° āĻŽāĻ§ā§āĻ¯ā§āĻ O(N) āĻāĻ° āĻāĻāĻāĻŋ āĻ°ā§āĻāĻŋāĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻĨāĻžāĻāĻŦā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ˛ā§āĻĒā§āĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻāĻ°āĻŋ, āĻ¯āĻž O(Nlog(N)) āĻāĻ° āĻ¸āĻžāĻŽāĻā§āĻ°āĻŋāĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻĻā§āĻ¯āĻŧāĨ¤ āĻāĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻāĻŋ āĻāĻā§āĻ°āĻāĻŋāĻ° āĻā§āĻ¯āĻŧā§ āĻāĻžāĻ˛, āĻ¤āĻŦā§ āĻāĻ¨ā§āĻ¨āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ¨āĻ āĻāĻžāĻ¯āĻŧāĻāĻž āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ 3: āĻ°ā§āĻāĻŋāĻ āĻ¸āĻŽāĻ¯āĻŧ
āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž: O(N)āĨ¤
āĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻāĻŋāĻ˛āĻ¤āĻž: O(1)āĨ¤
āĻāĻāĻ¨ āĻāĻŽāĻ°āĻž āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻŦ, āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻ¯ā§ āĻ ā§āĻ¯āĻžāĻ°ā§āĻāĻŋ āĻ¸āĻžāĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻšāĻ˛ āĻĻā§āĻāĻŋ āĻ¸āĻāĻā§āĻ¯āĻž āĻ¨āĻŋāĻ¤ā§ āĻšāĻŦā§: āĻāĻāĻāĻŋ āĻļā§āĻ°ā§āĻ¤ā§ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻļā§āĻˇā§āĨ¤ āĻ¯āĻĻāĻŋ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĨā§āĻā§ āĻāĻŋāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻļā§āĻ°ā§ āĻāĻŦāĻ āĻļā§āĻˇ āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĻ¨āĨ¤
āĻ āĻŦāĻļā§āĻˇā§ āĻāĻŽāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻžāĻā§āĻāĻŋāĻ¤ āĻŽāĻžāĻ¨ āĻ¸āĻŽā§āĻŽā§āĻā§āĻ¨ āĻšāĻŦ āĻāĻŦāĻ āĻ¸āĻ¤ā§āĻ¯ āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻŦā§, āĻ āĻĨāĻŦāĻž āĻļā§āĻ°ā§ āĻāĻŦāĻ āĻļā§āĻˇ āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻšāĻŦā§ āĻāĻŦāĻ āĻŽāĻŋāĻĨā§āĻ¯āĻž āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻŦā§āĨ¤
const findSum = (arr, val) => {
let start = 0;
let end = arr.length - 1;
while (start < end) {
let sum = arr[start] + arr[end];
if (sum > val) {
end -= 1;
} else if (sum < val) {
start += 1;
} else {
return true;
};
};
return false;
};
āĻāĻāĻ¨ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ āĻŋāĻ āĻāĻā§, āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻāĻŋ āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§ āĻā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻāĻŋ āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¯ā§ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻ āĻ°ā§āĻĄāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛?
āĻ¤āĻāĻ¨ āĻāĻŋ?
āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻĨāĻŽā§ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻ āĻ°ā§āĻĄāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻ¤āĻžāĻŽ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻĒāĻ°ā§āĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻ¤āĻžāĻŽāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻāĻŋ āĻŽā§āĻ¤ā§āĻ¯ā§āĻĻāĻ¨ā§āĻĄ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒā§āĻ°āĻāĻžāĻŦāĻŋāĻ¤ āĻāĻ°āĻŦā§?
āĻ¸ā§āĻ°āĻž āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽ āĻšāĻ˛ āĻāĻžāĻāĻŽ āĻāĻŽāĻĒā§āĻ˛ā§āĻā§āĻ¸āĻŋāĻāĻŋ O (Nlog (N)) āĻ¸āĻš āĻā§āĻāĻāĻ¸āĻ°ā§āĻāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻāĻāĻŋāĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻ°ā§āĻŦā§āĻ¤ā§āĻ¤āĻŽ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻ° āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž O(N) āĻĨā§āĻā§ O(Nlog(N)) āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻŦā§āĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ unordered āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻ¸āĻā§āĻā§ āĻāĻāĻāĻŋ āĻ°ā§āĻāĻŋāĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ?
4 āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨
āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž: O(N)āĨ¤
āĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻāĻŋāĻ˛āĻ¤āĻž: O(N)āĨ¤
āĻšā§āĻ¯āĻžāĻ, āĻāĻāĻāĻŋ āĻ°ā§āĻāĻŋāĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§; āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻŽā§āĻ¯āĻžāĻāĻā§āĻ˛āĻŋ āĻā§āĻāĻāĻāĻŋ āĻ¤āĻžāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻā§āĻ°ā§āĻĄ-āĻ āĻĢ āĻšāĻ˛ āĻāĻ°āĻ āĻŽā§āĻŽāĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°: āĻāĻāĻŋ āĻāĻžāĻāĻā§ āĻāĻāĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻāĻŋāĻ˛āĻ¤āĻž O(1) āĻāĻ° āĻā§āĻ¯āĻŧā§ āĻŦā§āĻļāĻŋāĨ¤
āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻŽāĻžāĻ¨ 1 āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻŽāĻžāĻ¨ 8 āĻšāĻ¯āĻŧ, āĻāĻŽāĻ°āĻž "āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻŽāĻžāĻ¨" āĻ ā§āĻ¯āĻžāĻ°ā§āĻ¤ā§ āĻŽāĻžāĻ¨ 7 āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
āĻ¤āĻžāĻ°āĻĒāĻ°, āĻāĻŽāĻ°āĻž āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻŽāĻ°āĻž "āĻ āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻŽāĻžāĻ¨" āĻāĻ° āĻ ā§āĻ¯āĻžāĻ°ā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯ā§ āĻ¤āĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻŽāĻžāĻ¨ā§āĻ° āĻ¸āĻŽāĻžāĻ¨ āĻāĻŋāĻ¨āĻžāĨ¤ āĻ¯āĻĻāĻŋ āĻšā§āĻ¯āĻžāĻ, āĻ¸āĻ¤ā§āĻ¯ āĻĢāĻŋāĻ°ā§.
const findSum = (arr, val) => {
let searchValues = [val - arr[0]];
for (let i = 1; i < arr.length; i++) {
let searchVal = val - arr[i];
if (searchValues.includes(arr[i])) {
return true;
} else {
searchValues.push(searchVal);
}
};
return false;
};
āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻ˛ā§āĻĒ, āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻĒāĻ°ā§ āĻĻā§āĻā§āĻāĻŋ, O(N) āĻāĻ° āĻāĻāĻāĻŋ āĻ°ā§āĻāĻŋāĻ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤ āĻ āĻāĻļāĻāĻŋ āĻšāĻ˛ Array.prototype.include(), āĻāĻāĻāĻŋ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¯āĻž āĻ¸āĻ¤ā§āĻ¯ āĻŦāĻž āĻŽāĻŋāĻĨā§āĻ¯āĻž āĻĢā§āĻ°āĻ¤ āĻĻā§āĻŦā§ āĻ¤āĻžāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§ āĻ¯ā§ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻŽāĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
Array.prototype.includes() āĻāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻŦā§āĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž MDN āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻĒāĻ˛āĻŋāĻĢāĻŋāĻ˛ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ (āĻāĻŦāĻ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§ āĻ˛ā§āĻāĻž) āĻ āĻĨāĻŦāĻž āĻāĻāĻāĻŋ JavaScript āĻāĻā§āĻāĻŋāĻ¨ā§āĻ° āĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻĄ āĻ¯ā§āĻŽāĻ¨ Google V8 (C++) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
if (!Array.prototype.includes) {
Object.defineProperty(Array.prototype, 'includes', {
value: function(valueToFind, fromIndex) {
if (this == null) {
throw new TypeError('"this" is null or not defined');
}
// 1. Let O be ? ToObject(this value).
var o = Object(this);
// 2. Let len be ? ToLength(? Get(O, "length")).
var len = o.length >>> 0;
// 3. If len is 0, return false.
if (len === 0) {
return false;
}
// 4. Let n be ? ToInteger(fromIndex).
// (If fromIndex is undefined, this step produces the value 0.)
var n = fromIndex | 0;
// 5. If n âĨ 0, then
// a. Let k be n.
// 6. Else n < 0,
// a. Let k be len + n.
// b. If k < 0, let k be 0.
var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
function sameValueZero(x, y) {
return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));
}
// 7. Repeat, while k < len
while (k < len) {
// a. Let elementK be the result of ? Get(O, ! ToString(k)).
// b. If SameValueZero(valueToFind, elementK) is true, return true.
if (sameValueZero(o[k], valueToFind)) {
return true;
}
// c. Increase k by 1.
k++;
}
// 8. Return false
return false;
}
});
}
āĻāĻāĻžāĻ¨ā§ Array.prototype.include() āĻāĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻŽā§āĻ˛āĻ āĻ āĻāĻļ āĻšāĻ˛ āĻ§āĻžāĻĒ 7-āĻ while āĻ˛ā§āĻĒ āĻ¯āĻž (āĻĒā§āĻ°āĻžāĻ¯āĻŧ) āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻĒā§āĻ°ā§ āĻĻā§āĻ°ā§āĻā§āĻ¯ āĻ āĻ¤āĻŋāĻā§āĻ°āĻŽ āĻāĻ°ā§āĨ¤ āĻāĻ° āĻŽāĻžāĻ¨ā§ āĻšāĻ˛ āĻāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋāĻ˛āĻ¤āĻžāĻ āĻ°ā§āĻāĻŋāĻāĨ¤ āĻ āĻŋāĻ āĻāĻā§, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻŋ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻāĻ āĻ§āĻžāĻĒ āĻĒāĻŋāĻāĻ¨ā§ āĻĨāĻžāĻā§, āĻ¤āĻžāĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻšāĻ˛ O (N + (N - 1))āĨ¤ āĻŦāĻŋāĻ āĻ āĻ¨ā§āĻā§āĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§, āĻāĻŽāĻ°āĻž āĻāĻāĻŋāĻā§ O(N)-āĻ¤ā§ āĻ¸āĻ°āĻ˛ āĻāĻ°āĻŋ - āĻāĻžāĻ°āĻŖ āĻāĻ¨āĻĒā§āĻ āĻāĻāĻžāĻ° āĻŦāĻžāĻĄāĻŧāĻžāĻ¨ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋ N āĻāĻ° āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻŦā§āĻļāĻŋ āĻĒā§āĻ°āĻāĻžāĻŦ āĻĒāĻĄāĻŧā§āĨ¤
āĻ¸ā§āĻĨāĻžāĻ¨āĻŋāĻ āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§, āĻāĻāĻāĻŋ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¯āĻžāĻ° āĻĻā§āĻ°ā§āĻā§āĻ¯ āĻŽā§āĻ˛ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻĢāĻ˛āĻ¨ āĻāĻ°ā§ (āĻŽāĻžāĻāĻ¨āĻžāĻ¸ āĻāĻ¯āĻŧāĻžāĻ¨, āĻšā§āĻ¯āĻžāĻ, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§), āĻ¯āĻžāĻ° āĻĢāĻ˛ā§ O(N) āĻ¸ā§āĻĨāĻžāĻ¨āĻŋāĻ āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻžāĻ˛, āĻŦāĻ°ā§āĻ§āĻŋāĻ¤ āĻŽā§āĻŽāĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ ā§āĻ¯āĻžāĻ˛āĻāĻ°āĻŋāĻĻāĻŽā§āĻ° āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻĻāĻā§āĻˇāĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§āĨ¤
āĻāĻŽāĻŋ āĻāĻļāĻž āĻāĻ°āĻŋ āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻŋāĻĄāĻŋāĻ āĻ¸āĻžāĻā§āĻˇāĻžā§āĻāĻžāĻ°ā§āĻ° āĻĒāĻ°āĻŋāĻĒā§āĻ°āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻāĻŋ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻ¸āĻŽā§āĻĒāĻĻ (āĻ¸āĻŽāĻ¯āĻŧ, āĻ¸ā§āĻŽā§āĻ¤āĻŋ) āĻĻāĻŋāĻ¯āĻŧā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
Skillbox āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻāĻ°ā§:
- āĻ āĻ¨āĻ˛āĻžāĻāĻ¨ āĻā§āĻ°ā§āĻ¸ā§āĻ° āĻāĻŦā§āĻĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
"āĻĒāĻžāĻāĻĨāĻ¨ āĻĄā§āĻāĻž āĻŦāĻŋāĻļā§āĻ˛ā§āĻˇāĻ" .- āĻ āĻ¨āĻ˛āĻžāĻāĻ¨ āĻā§āĻ°ā§āĻ¸
"āĻĒā§āĻļāĻž āĻĢā§āĻ°āĻ¨ā§āĻāĻāĻ¨ā§āĻĄ āĻĄā§āĻā§āĻ˛āĻĒāĻžāĻ°" .- āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ āĻŦāĻāĻ°ā§āĻ° āĻā§āĻ°ā§āĻ¸
"0 āĻĨā§āĻā§ PRO āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĒāĻŋāĻāĻāĻāĻĒāĻŋ āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§" .
āĻāĻ¤ā§āĻ¸: www.habr.com