āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡ āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ—āĻ˛ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ­āĻŋāĻ‰ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻž: 4āĻŸāĻŋ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻ‰āĻĒāĻžāĻ¯āĻŧ

āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡ āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ—āĻ˛ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ­āĻŋāĻ‰ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻž: 4āĻŸāĻŋ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻ‰āĻĒāĻžāĻ¯āĻŧ

āĻ¯āĻ–āĻ¨ āĻ†āĻŽāĻŋ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽā§‡āĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ…āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻ•āĻ°āĻ›āĻŋāĻ˛āĻžāĻŽ, āĻ¤āĻ–āĻ¨ āĻ†āĻŽāĻŋ āĻāĻŸāĻŋ āĻœā§āĻĄāĻŧā§‡ āĻāĻ¸ā§‡āĻ›āĻŋ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ—āĻ˛ āĻŽāĻ• āĻ¸āĻžāĻ•ā§āĻˇāĻžā§ŽāĻ•āĻžāĻ°ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ­āĻŋāĻĄāĻŋāĻ“āĨ¤. āĻāĻŸāĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻŦāĻĄāĻŧ āĻĒā§āĻ°āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ•āĻ°ā§āĻĒā§‹āĻ°ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¸āĻžāĻ•ā§āĻˇāĻžāĻ¤ā§āĻ•āĻžāĻ° āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ§āĻžāĻ°āĻŖāĻž āĻĻā§‡āĻ¯āĻŧ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽāĻŋāĻ• āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋ āĻ¯āĻ¤āĻŸāĻž āĻ¸āĻŽā§āĻ­āĻŦ āĻĻāĻ•ā§āĻˇāĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¤āĻž āĻŦā§‹āĻāĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ­āĻŋāĻĄāĻŋāĻ“āĻŸāĻŋāĻ° āĻāĻ• āĻ§āĻ°āĻŖā§‡āĻ° āĻ…āĻ¨ā§āĻˇāĻ™ā§āĻ—āĨ¤ āĻāĻŸāĻŋāĻ¤ā§‡ āĻ†āĻŽāĻŋ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°āĻŋ, āĻāĻŦāĻ‚ āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡āĻ° āĻ†āĻŽāĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĨ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽā§‡āĻ° āĻ¸ā§‚āĻ•ā§āĻˇā§āĻŽāĻ¤āĻžāĻ“ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻ†āĻŽāĻ°āĻž āĻŽāĻ¨ā§‡ āĻ•āĻ°āĻŋāĻ¯āĻŧā§‡ āĻĻāĻŋāĻšā§āĻ›āĻŋ: "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 āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻ•āĻ°ā§‡:

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨