Skip to content

Instantly share code, notes, and snippets.

View MohdSaifulM's full-sized avatar
😎

Mohammad Saiful Bin Mohammad MohdSaifulM

😎
  • Singapore
View GitHub Profile
@MohdSaifulM
MohdSaifulM / sameFrequency.js
Created November 7, 2022 14:42
Algorithms - Frequency Counter
function sameFrequency(first, second){
const firstStr = first.toString();
const secondStr = second.toString();
if (firstStr.length !== secondStr.length) return false;
let frequencyCounter = {};
for (let x of firstStr) {
frequencyCounter[x] = (frequencyCounter[x] || 0) + 1;
@MohdSaifulM
MohdSaifulM / validAnagram.js
Created November 7, 2022 14:44
Algorithms - Frequency Counter
function validAnagram (firstStr, secondStr) {
if (firstStr.length !== secondStr.length) return false;
let freqCount = {};
for (let x of firstStr) {
freqCount[x] = (freqCount[x] || 0) + 1
}
for (let y of secondStr) {
@MohdSaifulM
MohdSaifulM / areThereDuplicates.js
Created November 7, 2022 14:46
Algorithms - Multiple Pointers
function areThereDuplicates(...arr) {
if (arr.length === 0) return false;
arr = arr.sort();
let unique = 0;
for (let index = 1; index < arr.length; index++) {
if (arr[unique] === arr[index]) {
return true;
@MohdSaifulM
MohdSaifulM / averagePair.js
Created November 7, 2022 14:47
Algorithms - Multiple Pointers
function averagePair(arr, average) {
if (arr.length < 2) return false;
let left = 0;
let right = arr.length - 1;
const findAverage = (num1, num2) => {
return (num1 + num2) / 2;
}
@MohdSaifulM
MohdSaifulM / countUniqueValues.js
Created November 7, 2022 14:48
Algorithms - Multiple Pointers
function countUniqueValues(arr){
if (arr.length === 0) return 0;
let unique = 0;
let lookAhead = 1;
while (lookAhead < arr.length) {
if (arr[unique] !== arr[lookAhead]) {
unique++;
arr[unique] = arr[lookAhead];
@MohdSaifulM
MohdSaifulM / isSubsequence.js
Created November 7, 2022 16:28
Algorithms - Multiple Pointers
function isSubsequence(first, second) {
if (first.length > second.length) return false;
if (!first) return true;
let i = 0;
let j = 0;
while (j < second.length) {
if (first[i] === second[j]) i++;
@MohdSaifulM
MohdSaifulM / maxSubarraySum.js
Created November 9, 2022 13:54
Algorithms - Sliding Window
function maxSubarraySum(arr, window){
if (arr.length < window) return null;
let tempSum = 0;
for (let x = 0; x < window; x++) {
tempSum += arr[x]
}
let maxSum = tempSum;
@MohdSaifulM
MohdSaifulM / minSubArrayLen.js
Created November 10, 2022 14:48
Algorithms - Sliding Window
function minSubArrayLen(nums, sum) {
let total = 0;
let start = 0;
let end = 0;
let minLen = Infinity;
while (start < nums.length) {
if(total < sum && end < nums.length){
total += nums[end];
end++;
@MohdSaifulM
MohdSaifulM / findLongestSubstring.js
Created November 10, 2022 16:30
Algorithms - Sliding Window
function findLongestSubstring(str) {
if (str.length === 0) return 0;
let maxLen = -Infinity;
let start = 0;
let end = 0;
let strObj = {};
while (start < str.length) {
const endLetter = str[end];
@MohdSaifulM
MohdSaifulM / chunkArrayInGroups.js
Last active November 27, 2022 17:22
Algorithms - Recursion
function chunkArrayInGroups(arr, size) {
// Base condition
if (arr.length <= size) return [arr];
// Recursive case
return [arr.slice(0, size), ...chunkArrayInGroups(arr.slice(size), size)]
}
chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 2); // [[0, 1], [2, 3], [4, 5], [6]]