рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдПрдХ Google рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рд╕реЗ рдПрдХ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░рдирд╛: 4 рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ



рдЬрдм рдореИрдВ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд░рд╣рд╛ рдерд╛, рддреЛ рдореИрдВ Google рдХреЗ рдореЙрдХ рдЗрдВрдЯрд░рд╡реНрдпреВ рд╕реЗ рдЗрд╕ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рдордиреЗ рдЖрдпрд╛ред рдпрд╣ рди рдХреЗрд╡рд▓ рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдмрдбрд╝реЗ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдирд┐рдЧрдореЛрдВ рдореЗрдВ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреИрд╕реЗ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╕рдВрдмрдВрдзреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдХреИрд╕реЗ рд╣рд▓ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рд╕рдмрд╕реЗ рдХреБрд╢рд▓рддрд╛ рд╕реЗред

рдпрд╣ рд▓реЗрдЦ рд╡реАрдбрд┐рдпреЛ рдХреА рдПрдХ рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИред рдЗрд╕рдореЗрдВ, рдореИрдВ рджрд┐рдЦрд╛рдП рдЧрдП рд╕рднреА рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рджреЗрддрд╛ рд╣реВрдВ, рд╕рд╛рде рд╣реА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рднреАред рдкреНрд░рддреНрдпреЗрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдкрд░ рднреА рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред

рд╣рдо рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ: "рд╣реИрдмрд░" рдХреЗ рд╕рднреА рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП - "рд╣реИрдмрд░" рдкреНрд░реЛрдореЛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдХреЛрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдХрд░рддреЗ рд╕рдордп 10,000 рд░реВрдмрд▓ рдХреА рдЫреВрдЯред

рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ: рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд╛рдареНрдпрдХреНрд░рдо "рдореЛрдмрд╛рдЗрд▓ рдбреЗрд╡рд▓рдкрд░ рдкреНрд░реЛ" ред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рд╣рдореЗрдВ рдПрдХ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рд░рдгреА рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рд╡реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╕рд╣реА рдпрд╛ рдЧрд▓рдд рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд░рдгреА рд╕реЗ рдХрд┐рд╕реА рднреА рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдпреЛрдЧ рджрд┐рдП рдЧрдП рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдХреНрдпрд╛ рд╕рд░рдгреА рдореЗрдВ рджреЛ рдкреВрд░реНрдгрд╛рдВрдХ x рдФрд░ y рд╣реИрдВ, рдЬреЛ рдЬреЛрдбрд╝реЗ рдЬрд╛рдиреЗ рдкрд░, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВ?

рдЙрджрд╛рд╣рд░рдг рдП

рдпрджрд┐ рд╣рдореЗрдВ рдПрдХ рд╕рд░рдгреА [1, 2, 4, 9] рдФрд░ 8 рдХрд╛ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдЧрд▓рдд рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рд░рдгреА рд╕реЗ рдХреЛрдИ рднреА рджреЛ рд╕рдВрдЦреНрдпрд╛рдПрдБ рдХреБрд▓ 8 рдирд╣реАрдВ рджреЗ рд╕рдХрддреА рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдмреА

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдПрдХ рд╕рд░рдгреА [1, 2, 4, 4] рд╣реИ рдФрд░ рдорд╛рди 8 рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ 4 + 8 = 8ред

рд╕рдорд╛рдзрд╛рди 1. рдмреНрд░реВрдЯрдлреЛрд░реНрд╕

рдЕрд╕реНрдерд╛рдпреА рдХрдард┐рдирд╛рдИ: O (N┬▓)ред
рд╕реНрдерд╛рдирд┐рдХ рдЬрдЯрд┐рд▓рддрд╛: рдУ (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 рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╣рдо рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ)ред

рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рд╕рдорд╛рдзрд╛рди рдЫреЛрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдиреЗрд╕реНрдЯреЗрдб рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдУ (рдПрди┬▓) рдХреА рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рджреНрд╡рд┐рдШрд╛рдд рд╣реИред


рд╕рдорд╛рдзрд╛рди 2. рдмрд╛рдЗрдирд░реА (рдмрд╛рдЗрдирд░реА) рдЦреЛрдЬ

рдЯреЗрдореНрдкреЛрд░рд▓ рдХрдард┐рдирд╛рдИ: O (Nlog (N))ред
рд╕реНрдерд╛рдирд┐рдХ рдЬрдЯрд┐рд▓рддрд╛: рдУ (1) ред

рдЪреВрдВрдХрд┐ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдСрд░реНрдбрд░ рдХрд┐рдП рдЧрдП рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдмрд╕реЗ рдХреБрд╢рд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИред рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рдореЗрдВ рд╕реНрд╡рдпрдВ рдПрдХ O (рд▓реЙрдЧ (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. рд░реИрдЦрд┐рдХ рд╕рдордп

рдЕрд╕реНрдерд╛рдпреА рдХрдард┐рдирд╛рдИ: рдУ (рдПрди)ред
рд╕реНрдерд╛рдирд┐рдХ рдЬрдЯрд┐рд▓рддрд╛: рдУ (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; }; 


рдЕрдм рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд╕рдорд╛рдзрд╛рди рдЗрд╖реНрдЯрддрдо рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреМрди рдЧрд╛рд░рдВрдЯреА рджреЗрдЧрд╛ рдХрд┐ рд╕рд░рдгреА рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

рдлрд┐рд░ рдХреНрдпрд╛?


рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рд╕рд░рдгреА рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд░рдирдЯрд╛рдЗрдо рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛?

рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реЗ (Nlog (N)) рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд╕рд╛рде рддреЗрдЬреА рд╕реЗ рдЫрдБрдЯрд╛рдИ рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рдЗрд╖реНрдЯрддрдо рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ O (N) рд╕реЗ O (Nlog (N)) рдореЗрдВ рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред рдХреНрдпрд╛ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдПрдХ рд░реИрдЦрд┐рдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рдирд┐рд░реНрдгрдп рек

рдЕрд╕реНрдерд╛рдпреА рдХрдард┐рдирд╛рдИ: рдУ (рдПрди)ред
рд╕реНрдерд╛рдирд┐рдХ рдЬрдЯрд┐рд▓рддрд╛: рдУ (рдПрди)ред

рд╣рд╛рдВ, рдПрдХ рд░реИрдЦрд┐рдХ рд╕рдорд╛рдзрд╛рди рдореМрдЬреВрдж рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдирдИ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрди рдореЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЯреНрд░реЗрдбрдСрдлрд╝ рдореЗрдореЛрд░реА рдХрд╛ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рдЙрдкрдпреЛрдЧ рд╣реИ: рдпрд╣ рд▓реЗрдЦ рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдерд╛рдирд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдУ (1) рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред

рдпрджрд┐ рдЗрд╕ рд╕рд░рдгреА рдХрд╛ рдкрд╣рд▓рд╛ рдорд╛рди 1 рд╣реИ рдФрд░ рдЦреЛрдЬ рдореВрд▓реНрдп 8 рд╣реИ, рддреЛ рд╣рдо рдорд╛рди рдХреЛ "рдЦреЛрдЬ рдорд╛рди" рдХреЗ рд╕рд░рдгреА рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд┐рд░, рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдо "рдЦреЛрдЬ рдорд╛рди" рдХреЗ рд╕рд░рдгреА рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣рдорд╛рд░реЗ рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рд╣рд╛рдБ, рддреЛ рд╕рдЪ рд▓реМрдЯреЗрдВред

 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; }; 

рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЖрдзрд╛рд░ рд▓реВрдк рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдКрдкрд░ рджреЗрдЦрд╛, рдореЗрдВ рд░реИрдЦрд┐рдХ рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рдУ (рдПрди) рд╣реИред

рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рджреВрд╕рд░рд╛ рдкреБрдирд░рд╛рд╡реГрддрд┐ рднрд╛рдЧ Array.prototype.include () рд╣реИ, рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдзрд┐ рдЬреЛ рд╕рд░рдгреА рдХреЛ рджрд┐рдП рдЧрдП рдорд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╣реА рдпрд╛ рдЧрд▓рдд рд▓реМрдЯреЗрдЧреАред

Array.prototype.includes () рдХреЗ рд╕рдордп рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо MDN рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдкреЙрд▓реАрдлрд╝рд┐рд▓ (рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ) рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ Google V8 (C ++) рдЬреИрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 // https://tc39.imtqy.com/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 рдореЗрдВ рд▓реВрдк рд╣реИ, рдЬреЛ рджрд┐рдП рдЧрдП рдПрд░реЗ рдХреА рдкреВрд░реА рд▓рдВрдмрд╛рдИ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдЕрд╕реНрдерд╛рдпреА рдЬрдЯрд┐рд▓рддрд╛ рд░реИрдЦрд┐рдХ рднреА рд╣реИред рдЦреИрд░, рдЪреВрдВрдХрд┐ рдпрд╣ рд╣рдореЗрд╢рд╛ рд╣рдорд╛рд░реЗ рдореБрдЦреНрдп рд╕рд░рдгреА рд╕реЗ рдПрдХ рдХрджрдо рдкреАрдЫреЗ рд╣реИ, рд╕рдордп рдХреА рдЬрдЯрд┐рд▓рддрд╛ рд╣реЗ (рдПрди + (рдПрди - 1))ред рдмрд┐рдЧ рдУ рдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдЗрд╕реЗ рдУ (рдПрди) рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдХрд░рддреЗ рд╣реИрдВ - рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрди рд╣реИ рдЬреЛ рдмрдврд╝рддреЗ рдЗрдирдкреБрдЯ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкреНрд░рднрд╛рд╡ рд╣реИред

рд╕реНрдерд╛рдирд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд░рдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреА рд▓рдВрдмрд╛рдИ рдореВрд▓ рд╕рд░рдгреА рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИ (рд╢реВрдиреНрдп рд╕реЗ рдПрдХ, рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рдЬреЛ O (N) рдХреА рд╕реНрдерд╛рдирд┐рдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдареАрдХ рд╣реИ, рдмрдврд╝реА рд╣реБрдИ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХрддрдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджрдХреНрд╖рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред


рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рд╡реАрдбрд┐рдпреЛ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рд▓рдЧрд╛рд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд░рд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ (рд╕рдордп, рд╕реНрдореГрддрд┐) рдХреЗ рд╕рд╛рде рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдХрд┐рд▓рдмреЙрдХреНрд╕ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ:

Source: https://habr.com/ru/post/hi443886/


All Articles