Ashish donga

Posted on

Top 7 best Algorithms to Improve your JavaScript Skillsπ π

Today I will teach you top 7 best algorithms to improve your JavaScript skills

best Algorithms to Improve JavaScript Skills as programmer

so let's start to understand JavaScript algorithms

1. how to Find the missing number from the array

``````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. Inverting integers in 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.Array alignment

``````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.Alignment in strings

``````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.Longest valid brackets

``````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.String multiplication

``````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β
``````

4Sum

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

thank you for reading our best Algorithms to Improve your JavaScript Skills guide

if you have any suggestion than comment