JavaScript 기술을 향상시키는 최고의 7가지 알고리즘🚀 🚀

JavaScript 기술을 향상시키는 최고의 7가지 알고리즘🚀 🚀

2022-10-19 last update

7 minutes reading javascript productivity programming beginners
오늘은 JavaScript 기술을 향상시키는 최고의 알고리즘 7가지를 알려 드리겠습니다.

프로그래머로서 JavaScript 기술을 향상시키는 최고의 알고리즘



이제 JavaScript 알고리즘을 이해하기 시작하겠습니다.

1. 배열에서 누락된 숫자를 찾는 방법




const find_missing = function(input) {
  let n = input.length + 1;
let sum = 0;
  for (let i in input) {
    sum += input[i];
  }
return Math.floor((n * (n + 1)) / 2) - sum;
};



Input: [1, 2, 3, 4, 6, 7, 8, 9, 10]
Output: 5



2. JavaScript에서 정수 반전




const reverse = function(num) {
    let result = 0;
    while (num !== 0) {
      result = result * 10 + num % 10;
      // Math.trunc() 方法会将数字的小数部分去掉,只保留整数部分
      num = Math.trunc(num / 10);
    }
if (result > 2**31 || result < -(2**31)) return 0;
    return result;
};




Input: num = 123
Output: 321
Input: num = -123
Output: -321


3.배열 정렬




const permute = function(nums) {
    let results = [];
let go = (current) => {
      if (current.length === nums.length){
        results.push(current);
        return;
      }
      nums.forEach(n => {
        if (!current.includes(n)){
          go([...current, n]);
        }
      });
    }
    go([]);
    return results;
};



Input: [1,2,3]
Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]


4. 문자열 정렬




const checkPermutation = function(s1, s2) {
  const len1 = s1.length, len2 = s2.length;
  if (len1 > len2) return false;
const count = Array(26).fill(0);
  for (let i = 0; i < len1; i++) {
      count[s1.charCodeAt(i)-97]++;
      count[s2.charCodeAt(i)-97]--;
  }
  if (!count.some(e => e !== 0)) return true;
for (let i = len1; i < len2; i++) {
      count[s2.charCodeAt(i)-97]--;
      count[s2.charCodeAt(i-len1)-97]++;
      if (!count.some(e => e !== 0)) return true;
  }
  return false;
};



Input: s1 = “ab”, s2 = “eidbao”
Output: true
Input: s1 = “aa”, s2 = “eidbao”
Output: false



5. 가장 긴 유효한 괄호




const longestValidParentheses = function(S) {
  let stack = [-1], ans = 0;
  for (let i = 0; i < S.length; i++)
    if (S[i] === '(') stack.push(i)
    else if (stack.length === 1) stack[0] = i
    else stack.pop(), ans = Math.max(ans, i - stack[stack.length-1])
  return ans
};



Input: “(()”
Output: 2
Input: “)()())”
Output: 4


6. 문자열 곱셈




const multiply = function(num1, num2) {
 if (num1 == 0 || num2 == 0) return ‘0’;
 const result = [];
for (let a = num1.length — 1; a >= 0; a — ) {
 for (let b = num2.length — 1; b >= 0; b — ) {
 const p1 = a + b;
 const p2 = a + b + 1;
 const sum = (result[p2] ?? 0) + num1[a] * num2[b];
result[p1] = (result[p1] ?? 0) + Math.floor(sum / 10);
 result[p2] = sum % 10;
 }
 }
 result[0] == 0 && result.shift();
 return result.join(‘’);
};



Input: num1 = “2”, num2 = “3”
Output: “6”


4합




const fourSum = function(nums, target) {
  let result = [];
  let length = nums.length;
  if (length < 4) return result; 
  nums = nums.sort((a, b) => a - b );
for (let i = 0; i < length - 3; i++) {
    if (nums[i] === nums[i - 1]) continue;
    for (let j = i + 1; j < length - 2; j++) {
      if (j > i + 1 && nums[j] === nums[j - 1]) continue;
let k = j + 1;
      let l = length - 1;
while (k < l) {
        const sum = nums[i] + nums[j] + nums[k] + nums[l];
if (sum === target) {
          result.push([nums[i], nums[j], nums[k], nums[l]])
        }
if (sum <= target) {
          k += 1;
          while (nums[k] === nums[k - 1]) {
            k += 1;
          }
        }
if (sum >= target) {
          l -= 1;
          while (nums[l] === nums[l + 1]) {
            l -= 1;
          }
        }
      }
    }
  }
return result;
};


JavaScript 기술 향상을 위한 최고의 알고리즘 가이드를 읽어주셔서 감사합니다.

의견보다 제안 사항이 있으면