8000 feat: Solved 15 Leetcode problems · ralvarezdev/leetcode@bddfc25 · GitHub
[go: up one dir, main page]

Skip to content

Commit bddfc25

Browse files
committed
feat: Solved 15 Leetcode problems
* Solved 15 Leetcode problems from the 30 Days of JavaScript study plan
1 parent 8774368 commit bddfc25

15 files changed

+352
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/**
2+
* @param {number[]} arr
3+
* @param {Function} fn
4+
* @return {number[]}
5+
*/
6+
var map = function (arr, fn)
7+
{
8+
const newArray = new Array(arr.length);
9+
arr.forEach((element, i) => newArray[i] = fn(element, i));
10+
return newArray;
11+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {Function} fn
4+
* @param {number} init
5+
* @return {number}
6+
*/
7+
var reduce = function (nums, fn, init)
8+
{
9+
let accum = init;
10+
nums.forEach((element, _) =>
11+
{
12+
accum = fn(accum, element);
13+
});
14+
return accum;
15+
};
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* @param {number[]} arr
3+
* @param {Function} fn
4+
* @return {number[]}
5+
*/
6+
var filter = function (arr, fn)
7+
{
8+
const newArr = [];
9+
arr.forEach((element, i) =>
10+
{
11+
if (fn(element, i))
12+
newArr.push(element);
13+
});
14+
return newArr;
15+
};
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* @param {integer} init
3+
* @return { increment: Function, decrement: Function, reset: Function }
4+
*/
5+
var createCounter = function (init)
6+
{
7+
const def = init;
8+
9+
return {
10+
increment: () => ++init,
11+
decrement: () => --init,
12+
reset: () => init = def
13+
};
14+
};
15+
16+
/**
17+
* const counter = createCounter(5)
18+
* counter.increment(); // 6
19+
* counter.reset(); // 5
20+
* counter.decrement(); // 4
21+
*/
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* @param {number} n
3+
* @return {Function} counter
4+
*/
5+
var createCounter = function (n)
6+
{
7+
let counter = n;
8+
9+
return function ()
10+
{
11+
return counter++;
12+
};
13+
};
14+
15+
/**
16+
* const counter = createCounter(10)
17+
* counter() // 10
18+
* counter() // 11
19+
* counter() // 12
20+
*/
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* @return {Function}
3+
*/
4+
function createHelloWorld ()
5+
{
6+
return function ()
7+
{
8+
return "Hello World";
9+
};
10+
};
11+
12+
/**
13+
* const f = createHelloWorld();
14+
* f(); // "Hello World"
15+
*/
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* @param {string} val
3+
* @return {Object}
4+
*/
5+
var expect = function (val)
6+
{
7+
const expectObject = {};
8+
9+
expectObject.toBe = function (valToBe)
10+
{
11+
if (valToBe !== val)
12+
throw new Error("Not Equal");
13+
return true;
14+
};
15+
16+
expectObject.notToBe = function notToBe (valNotToBe)
17+
{
18+
if (valNotToBe === val)
19+
throw new Error("Equal");
20+
return true;
21+
};
22+
return expectObject;
23+
};
24+
25+
/**
26+
* expect(5).toBe(5); // true
27+
* expect(5).notToBe(5); // throws "Equal"
28+
*/
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* @param {Function} fn
3+
* @return {Function}
4+
*/
5+
var once = function (fn)
6+
{
7+
let called = false;
8+
9+
return function (...args)
10+
{
11+
if (called)
12+
return undefined;
13+
14+
called = true;
15+
return fn(...args);
16+
};
17+
};
18+
19+
/**
20+
* let fn = (a,b,c) => (a + b + c)
21+
* let onceFn = once(fn)
22+
*
23+
* onceFn(1,2,3); // 6
24+
* onceFn(2,3,6); // returns undefined without calling fn
25+
*/
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @param {Function[]} functions
3+
* @return {Function}
4+
*/
5+
var compose = function (functions)
6+
{
7+
return function (x)
8+
{
9+
for (let i = functions.length - 1; i >= 0; i--)
10+
x = functions[i](x);
11+
return x;
12+
};
13+
};
14+
15+
/**
16+
* const fn = compose([x => x + 1, x => 2 * x])
17+
* fn(4) // 9
18+
*/
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**
2+
* @param {...(null|boolean|number|string|Array|Object)} args
3+
* @return {number}
4+
*/
5+
var argumentsLength = function (...args)
6+
{
7+
return args.length;
8+
};
9+
10+
/**
11+
* argumentsLength(1, 2, 3); // 3
12+
*/

0 commit comments

Comments
 (0)
0