├── leetcode-1480-day1.js ├── leetcode-1491-day2.js ├── leetcode-1539-day3.js └── leetocde-1636-day4.js /leetcode-1480-day1.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number[]} nums 3 | * @return {number[]} 4 | */ 5 | var runningSum = function(nums) { 6 | let sum = 0; 7 | for (let i = 0; i < nums.length; i++) { 8 | sum = sum + nums[i]; 9 | nums[i] = sum; 10 | } 11 | return nums; 12 | }; 13 | 14 | // Time complexity O(n) 15 | // Space Complexity O(1) 16 | -------------------------------------------------------------------------------- /leetcode-1491-day2.js: -------------------------------------------------------------------------------- 1 | var average = function(salary) { 2 | let averageSalary = 0; 3 | let min = Number.MAX_VALUE; 4 | let max = 0; 5 | for (let i = 0; i < salary.length; i++) { 6 | if (salary[i] < min) min = salary[i]; 7 | if (salary[i] > max) max = salary[i]; 8 | averageSalary += salary[i]; 9 | } 10 | averageSalary = (averageSalary - min - max) / (salary.length - 2); 11 | return averageSalary; 12 | }; 13 | 14 | // Time complexity O(n) 15 | // Space Complexity O(1) 16 | -------------------------------------------------------------------------------- /leetcode-1539-day3.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number[]} arr 3 | * @param {number} k 4 | * @return {number} 5 | */ 6 | var findKthPositive = function(arr, k) { 7 | let missingPrev = arr[0] - 1; 8 | let missingSoFar = arr[0] - 1; 9 | let missing; 10 | let elementPresentInArrayRange = false; // check if missing element found in array range 11 | if (k < arr[0]) { 12 | //if missing element present before forst element 13 | return k; 14 | } 15 | for (let i = 1; i < arr.length; i++) { 16 | // between 4 7 there are 7 - 4 - 1 = 2 missing numbers 17 | missingSoFar = missingSoFar + arr[i] - arr[i - 1] - 1; 18 | if (missingSoFar >= k) { 19 | missing = arr[i - 1] + k - missingPrev; 20 | elementPresentInArrayRange = true; 21 | break; 22 | } 23 | missingPrev = missingSoFar; 24 | } 25 | //missing element present outside array range 26 | if (!elementPresentInArrayRange === false) 27 | return arr[arr.length - 1] + k - missingSoFar; 28 | return missing; 29 | }; 30 | 31 | // Time complexity O(n) 32 | // Space Complexity O(1) 33 | -------------------------------------------------------------------------------- /leetocde-1636-day4.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @param {number[]} nums 3 | * @return {number[]} 4 | */ 5 | var frequencySort = function(nums) { 6 | let frequency = {}; 7 | // find out frequency of every element 8 | // for input [1,1,2,2,2,3] 9 | // frequency = {'1' : 2, '2' : 3; '3' : 1} 10 | for (let i = 0; i < nums.length; i++) { 11 | if (frequency[nums[i]]) frequency[nums[i]]++; 12 | else frequency[nums[i]] = 1; 13 | } 14 | 15 | // frequency = [[1,2],[2,3],[3,1]] 16 | frequency = Object.entries(frequency); 17 | 18 | // sort the above array based on frequency 19 | // [[2,3],[1,2],[3,1]] 20 | frequency.sort(function(a, b) { 21 | if (a[1] != b[1]) return a[1] - b[1]; 22 | else return b[0] - a[0]; 23 | }); 24 | 25 | // create the new array based on top result 26 | let index = 0; 27 | for (let i = 0; i < frequency.length; i++) { 28 | for (let j = 0; j < frequency[i][1]; j++) { 29 | nums[index++] = frequency[i][0]; 30 | } 31 | } 32 | return nums; 33 | }; 34 | 35 | // Time complexity O(nlogn) best sorting algo is nlogn time 36 | // Space Complexity O(n) for frequency 37 | --------------------------------------------------------------------------------