Skip to content
24 changes: 24 additions & 0 deletions binarySearch.js
Original file line number Diff line number Diff line change
@@ -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));
12 changes: 12 additions & 0 deletions challenge 1/twosum.js
Original file line number Diff line number Diff line change
@@ -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));
26 changes: 26 additions & 0 deletions challenge 2/bestTimeToBuyAndSellStock.js
Original file line number Diff line number Diff line change
@@ -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]));
15 changes: 15 additions & 0 deletions challenge 3/containsDuplicate.js
Original file line number Diff line number Diff line change
@@ -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]));
10 changes: 10 additions & 0 deletions challenge 4/sumOfTwoInteger.js
Original file line number Diff line number Diff line change
@@ -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));
22 changes: 22 additions & 0 deletions challenge 5/productOfArrayExceptSelf.js
Original file line number Diff line number Diff line change
@@ -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]));
16 changes: 16 additions & 0 deletions challenge 6/maximumSubArray.js
Original file line number Diff line number Diff line change
@@ -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]));
18 changes: 18 additions & 0 deletions challenge 7/maxProductSubarray.js
Original file line number Diff line number Diff line change
@@ -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]));
30 changes: 30 additions & 0 deletions challenge 8/serchInRotatedSortedArray.js
Original file line number Diff line number Diff line change
@@ -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
3 changes: 3 additions & 0 deletions read-me.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Nabeel M S

nabeelms097@gmail.com