diff --git a/binarySearch.js b/binarySearch.js new file mode 100644 index 0000000..88c31aa --- /dev/null +++ b/binarySearch.js @@ -0,0 +1,24 @@ +var search = function (nums, target) { + let left = 0; + let right = nums.length - 1; + while (left <= right) { + let middle = Math.floor(left + (right - left) / 2); + + if (nums[middle] === target) { + return middle; + } else if (nums[middle] < target) { + left = middle + 1; + } else { + right = middle - 1; + } + + + } +return -1; +}; + + + + + +console.log(search([-1, 0, 3, 5, 9, 12,13,14,15,16,17], 3)); diff --git a/challenge 1/twosum.js b/challenge 1/twosum.js new file mode 100644 index 0000000..d0ed07a --- /dev/null +++ b/challenge 1/twosum.js @@ -0,0 +1,12 @@ +function twoSum(nums, target) { + var prevHash = new Map(); + for (var i = 0; i < nums.length; i++) { + var reminder = target - nums[i]; + if (prevHash.has(reminder)) { + return [prevHash.get(reminder), i]; + } + prevHash.set(nums[i], i); + } + return []; +} +console.log(twoSum([3, 5, 5, 6, 4, 8, 9], 9)); diff --git a/challenge 2/bestTimeToBuyAndSellStock.js b/challenge 2/bestTimeToBuyAndSellStock.js new file mode 100644 index 0000000..6d302c5 --- /dev/null +++ b/challenge 2/bestTimeToBuyAndSellStock.js @@ -0,0 +1,26 @@ +/** + * @param {number[]} prices + * @return {number} + */ +var maxProfit = function (prices) { + let left = 0; + let right = 1; + let maxProfit = 0; + + while (right < prices.length) { + if (prices[left] < prices[right]) { + let profit = prices[right] - prices[left]; + + if (maxProfit < profit) { + maxProfit = profit; + } + } else { + left = right; + } + right++; + } + + return maxProfit; +}; + +console.log(maxProfit([3, 2, 5, 6, 7, 3])); diff --git a/challenge 3/containsDuplicate.js b/challenge 3/containsDuplicate.js new file mode 100644 index 0000000..8cfd52d --- /dev/null +++ b/challenge 3/containsDuplicate.js @@ -0,0 +1,15 @@ +function containsDuplicate(nums) { + let map = new Set(); + + for (let num of nums) { + if (map.has(num)) { + return true; + } else { + map.add(num); + } + } + return false; +} + + +console.log(containsDuplicate([3,2,5,1])); diff --git a/challenge 4/sumOfTwoInteger.js b/challenge 4/sumOfTwoInteger.js new file mode 100644 index 0000000..89bb069 --- /dev/null +++ b/challenge 4/sumOfTwoInteger.js @@ -0,0 +1,10 @@ +var getSum = function (a, b) { + while (b != 0) { + let tmp = (a & b) << 1; + a = a ^ b; + b = tmp; + } + return a; +}; + +console.log(getSum(2, 3)); diff --git a/challenge 5/productOfArrayExceptSelf.js b/challenge 5/productOfArrayExceptSelf.js new file mode 100644 index 0000000..0982eb5 --- /dev/null +++ b/challenge 5/productOfArrayExceptSelf.js @@ -0,0 +1,22 @@ +var productExceptSelf = function (array) { + let prefix = new Array(array.length).fill(1); + let postFix = new Array(array.length).fill(1); + + let n = array.length; + let answers = new Array(n); + + for (let i = 1; i < array.length; i++) { + prefix[i] = prefix[i - 1] * array[i - 1]; + } + + for (let i = n - 2; i >= 0; i--) { + postFix[i] = postFix[i + 1] * array[i + 1]; + } + + for (let i = 0; i < n; i++) { + answers[i] = prefix[i] * postFix[i]; + } + return answers; +}; + +console.log(productExceptSelf([1, 2, 3, 4])); diff --git a/challenge 6/maximumSubArray.js b/challenge 6/maximumSubArray.js new file mode 100644 index 0000000..df37d44 --- /dev/null +++ b/challenge 6/maximumSubArray.js @@ -0,0 +1,16 @@ +var maxSubArray = function (nums) { + let maxSum = nums[0]; + let currentSum = 0; + + for (let num of nums) { + if (currentSum < 0) { + currentSum = 0; + } + + currentSum = currentSum + num; + maxSum = Math.max(currentSum, maxSum); + } + return maxSum; +}; + +console.log(maxSubArray([5, 2, 1, -1, -5, 6, 2, -5, -7])); diff --git a/challenge 7/maxProductSubarray.js b/challenge 7/maxProductSubarray.js new file mode 100644 index 0000000..4e9a971 --- /dev/null +++ b/challenge 7/maxProductSubarray.js @@ -0,0 +1,18 @@ +var maxProduct = function (nums) { + let currentMinProduct = 1; + let currentMaxProduct = 1; + let result = nums[0]; + + for (let num of nums) { + let temp = currentMaxProduct * num; + + currentMaxProduct = Math.max(temp, currentMinProduct * num, num); + currentMinProduct = Math.min(temp, currentMinProduct * num, num); + + result = Math.max(result,currentMaxProduct) + + } + return result +}; + +console.log(maxProduct([2,3,-2,4])); diff --git a/challenge 8/serchInRotatedSortedArray.js b/challenge 8/serchInRotatedSortedArray.js new file mode 100644 index 0000000..827fc5e --- /dev/null +++ b/challenge 8/serchInRotatedSortedArray.js @@ -0,0 +1,30 @@ +let search = function (nums, target) { + let l = 0; + let r = nums.length - 1; + + while (l <= r) { + let mid = parseInt((r + l) / 2); + + if (nums[mid] === target) { + return mid; + } + + if (nums[l] <= nums[mid]) { + if (target > nums[mid] || target < nums[l]) { + l = mid + 1; + } else { + r = mid - 1; + } + } else { + if (target < nums[mid] || target > nums[r]) { + r = mid - 1; + } else { + l = mid + 1; + } + } + } + + return -1; + }; + + console.log(search([4, 5, 6, 7, 8, 1, 2, 3], 6)); // Should print 2 diff --git a/read-me.md b/read-me.md new file mode 100644 index 0000000..135ed43 --- /dev/null +++ b/read-me.md @@ -0,0 +1,3 @@ +Nabeel M S + +nabeelms097@gmail.com \ No newline at end of file