Skip to content

Commit 1af49a4

Browse files
committed
doc: Added README.md
* Added README.md * Added .gitignore * Added 4 Leetcode problem solutions
1 parent 723628e commit 1af49a4

8 files changed

+220
-10
lines changed

.gitignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# jetbrains' ides
2+
.idea/
3+
4+
# vscode
5+
.vscode/

.idea/.gitignore

-10
This file was deleted.

README.md

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Leetcode
2+
3+
This repository contains my solutions to Leetcode problems, which I have solved using multiple programming languages.
4+
5+
You can visit my profile [here](https://leetcode.com/ralvarezdev/).
6+
7+
## Developers
8+
9+
- [ralvarezdev](https://github.com/ralvarezdev) - Ramón Álvarez
10+
11+
## Programming Languages
12+
13+
- Python
14+
- JavaScript
15+
- Java
16+
- SQL
17+
18+
## Sections
19+
20+
- [30 Days of JavaScript](30-days-of-javascript)
21+
- [Top SQL 50](top-sql-50)
22+
- [Daily Challenges](monthly)
23+
- [Random Challenges](random)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* @param {number[][]} matrix
3+
* @return {number[]}
4+
*/
5+
var luckyNumbers = function(matrix) {
6+
const minMap = new Map(), maxMap = new Map()
7+
8+
for(let i=0, j, min;i<matrix.length;i++){
9+
min = matrix[i][0]
10+
11+
for(j=1;j<matrix[i].length;j++)
12+
if(matrix[i][j]<min)
13+
min=matrix[i][j]
14+
15+
minMap.set(min, true)
16+
}
17+
18+
for(let i=0,j,max;i<matrix[0].length;i++)
19+
{
20+
max =matrix[0][i]
21+
22+
for(j=1;j<matrix.length;j++)
23+
if(matrix[j][i]>max)
24+
max=matrix[j][i]
25+
26+
maxMap.set(max, true)
27+
}
28+
29+
const result =[]
30+
31+
for(let key of minMap.keys())
32+
if(minMap.get(key)&&maxMap.get(key))
33+
result.push(key)
34+
35+
return result
36+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[]}
4+
*/
5+
var frequencySort = function(nums) {
6+
const numsSorted = new Array(nums.length), numsMap=new Map(), frequencyMap=new Map()
7+
let frequencyList=[], numsList, frequency
8+
9+
for(let num of nums){
10+
frequency = numsMap.get(num)
11+
12+
if(frequency===undefined)
13+
numsMap.set(num, 1)
14+
else
15+
numsMap.set(num, frequency+1)
16+
}
17+
18+
for(let num of numsMap.keys()){
19+
frequency=numsMap.get(num)
20+
numsList=frequencyMap.get(frequency)
21+
22+
if(numsList===undefined){
23+
frequencyMap.set(frequency, [num])
24+
frequencyList.push(frequency)
25+
}
26+
else
27+
numsList.push(num)
28+
}
29+
30+
frequencyList.sort((a,b)=>a-b)
31+
32+
for(let i=0,j=0,k,l,num;j<frequencyList.length;j++)
33+
{
34+
frequency=frequencyList[j]
35+
numsList=frequencyMap.get(frequency)
36+
numsList.sort((a,b)=>b-a)
37+
38+
for(k=0;k<numsList.length;k++)
39+
for(l=0;l<frequency;l++)
40+
numsSorted[i++]=numsList[k]
41+
}
42+
43+
console.log(frequencyList, frequencyMap)
44+
45+
return numsSorted
46+
};
+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* @param {string[]} names
3+
* @param {number[]} heights
4+
* @return {string[]}
5+
*/
6+
var sortPeople = function(names, heights) {
7+
const searchInsert = (nums, target)=> {
8+
let low = 0, high = nums.length - 1, mid, isUpper
9+
10+
while (high >= low) {
11+
mid = Math.floor((high + low) / 2)
12+
13+
if (nums[mid] === target)
14+
return mid
15+
16+
else if (nums[mid] < target) {
17+
high = mid - 1
18+
isUpper = false
19+
} else {
20+
low = mid + 1
21+
isUpper = true
22+
}
23+
}
24+
25+
return isUpper ? mid + 1 : mid
26+
}
27+
28+
const sortedHeights=[], sortedNames=[]
29+
let i, h, n
30+
31+
while(names.length>0&&heights.length>0)
32+
{
33+
h = heights.pop()
34+
n= names.pop()
35+
i=searchInsert(sortedHeights, h)
36+
sortedHeights.splice(i, 0, h)
37+
sortedNames.splice(i,0,n)
38+
}
39+
40+
return sortedNames
41+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[]}
4+
*/
5+
var sortArray = function(nums) {
6+
const sortedNums=[nums.pop()]
7+
8+
const binarySearchInsert=num=>{
9+
let low=0,high=sortedNums.length-1, mid,isUpper=false
10+
11+
while(high>=low){
12+
mid = Math.floor((high+low)/2)
13+
14+
if(sortedNums[mid]===num)
15+
return mid
16+
17+
else if(sortedNums[mid]>num)
18+
{
19+
high=mid-1
20+
isUpper=false
21+
}
22+
23+
else{
24+
low=mid+1
25+
isUpper=true
26+
}
27+
}
28+
29+
return isUpper?mid+1:mid
30+
}
31+
32+
let num, idx
33+
34+
while(nums.length>0){
35+
num = nums.pop()
36+
idx=binarySearchInsert(num)
37+
sortedNums.splice(idx,0,num)
38+
}
39+
return sortedNums
40+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[]}
4+
*/
5+
var sortArray = function(nums) {
6+
const merge = (leftArr,rightArr)=>{
7+
const arr=[]
8+
9+
while(leftArr.length>0&&rightArr.length>0)
10+
if(leftArr[0]>=rightArr[0])
11+
arr.push(rightArr.shift())
12+
else
13+
arr.push(leftArr.shift())
14+
15+
return [...arr,...leftArr,...rightArr]
16+
}
17+
18+
const mergeSort=arr=>{
19+
if(arr.length===1)
20+
return arr
21+
22+
const half=Math.floor(arr.length/2)
23+
const leftArr=arr.splice(half)
24+
25+
return merge(mergeSort(leftArr),mergeSort(arr))
26+
}
27+
28+
return mergeSort(nums)
29+
};

0 commit comments

Comments
 (0)