🧠JavaScript Problems Viewer
Problem 1
// problem 1
/**
* @param {string} val
* @return {Object}
*/
var expect = function(val) {
return {
toBe: function(expected) {
if (val === expected) return true;
throw new Error("Not Equal");
},
notToBe: function(expected) {
if (val !== expected) return true;
throw new Error("Equal");
}
};
};
/**
* expect(5).toBe(5); // true
* expect(5).notToBe(5); // throws "Equal"
*/
Problem 2
// problem 2
/**
* @param {integer} init
* @return { increment: Function, decrement: Function, reset: Function }
*/
var createCounter = function(init) {
let current = init;
return {
increment: function() {
return ++current;
},
decrement: function() {
return --current;
},
reset: function() {
current = init;
return current;
}
};
};
Problem 3
// problem 3
/**
* @param {number[]} nums
* @return {number}
*/
var removeDuplicates = function(nums) {
let uniqueSet = new Set(nums);
nums.splice(0, nums.length, ...uniqueSet);
return uniqueSet.size;
};
Problem 4
// problem 4
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function(prices) {
let min = prices[0];
let maxProfit = 0;
for (let i = 1; i < prices.length; i++) {
if (prices[i] < min) {
min = prices[i];
}
let profit = prices[i] - min;
if (profit > maxProfit) {
maxProfit = profit;
}
}
return maxProfit;
};
Problem 5
// problem 5
var majorityElement = function(nums) {
let map = new Map();
for (let num of nums) {
map.set(num, (map.get(num) || 0) + 1);
if (map.get(num) > nums.length / 2) {
return num;
}
}
return -1; // This should never be reached if the input guarantees a majority element.
};