Skip to content

Commit 2b2cc9c

Browse files
committed
feat: Solved 11 Leetcode problems
1 parent 4a7ff6f commit 2b2cc9c

20 files changed

+348
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @param {string} s
3+
* @return {number}
4+
*/
5+
var lengthOfLongestSubstring = function(s) {
6+
let max=0, map, counter
7+
8+
for(let i=0;i<s.length&&max<s.length-i;i++)
9+
{
10+
map = new Map()
11+
counter=0
12+
13+
for(let j=i;j<s.length;j++)
14+
if(map.get(s[j])!==undefined)
15+
break
16+
else{
17+
map.set(s[j], true)
18+
counter++
19+
}
20+
21+
if(counter>max)
22+
max=counter
23+
}
24+
25+
return max
26+
};
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @param {number} n
3+
* @param {number} time
4+
* @return {number}
5+
*/
6+
var passThePillow = function(n, time) {
7+
let person, t=0
8+
9+
while(t<time){
10+
let i=1
11+
12+
for(;i<n&& t<time;i++, t++)
13+
person=i
14+
15+
if(t===time){
16+
person=i
17+
break}
18+
19+
for(i=n-1;i>0&&t<time;i--, t++)
20+
person=i
21+
}
22+
return person
23+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
var removeDuplicates = function(nums) {
6+
let k=0, prevNum=null
7+
8+
for(const num of nums)
9+
if(num!==prevNum||prevNum===null){
10+
prevNum=num
11+
nums[k++]=num
12+
}
13+
14+
return k
15+
};
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} val
4+
* @return {number}
5+
*/
6+
var removeElement = function(nums, val) {
7+
let k=0
8+
9+
for(const num of nums)
10+
if(num!==val)
11+
nums[k++]=num
12+
13+
return k
14+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/*
2+
* Definition for singly-linked list.
3+
* function ListNode(val, next) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.next = (next===undefined ? null : next)
6+
* }
7+
*
8+
* @param {ListNode} l1
9+
* @param {ListNode} l2
10+
* @return {ListNode}
11+
*/
12+
var addTwoNumbers = function(l1, l2) {
13+
if(l1===null)
14+
return l2
15+
if(l2===null)
16+
return l1
17+
18+
const head=l1
19+
let prev, accum=0, val=0;
20+
21+
while(l1!==null){
22+
if(l2!==null){
23+
val=l1.val+l2.val+accum
24+
l2=l2.next
25+
}
26+
else
27+
val=l1.val+accum
28+
29+
l1.val=val%10
30+
accum=(val-val%10)/10
31+
prev=l1
32+
l1=l1.next
33+
}
34+
35+
if(l2!==null)
36+
prev.next=l2
37+
38+
while(l2!==null&&accum>0){
39+
val = l2.val+accum
40+
l2.val=val%10
41+
accum=(val-val%10)/10
42+
prev=l2
43+
l2=l2.next
44+
}
45+
if(accum>0){
46+
prev.next=new ListNode()
47+
prev.next.val=accum
48+
}
49+
50+
return head
51+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* @param {number} dividend
3+
* @param {number} divisor
4+
* @return {number}
5+
*/
6+
var divide = function(dividend, divisor) {
7+
const isNegative=(dividend>0&&divisor<0)||(dividend<0&&divisor>0)
8+
dividend=dividend>0?dividend:-dividend
9+
divisor=divisor>0?divisor:-divisor
10+
11+
if(divisor>dividend)
12+
return 0
13+
14+
const min= -Math.pow(2, 31)
15+
const max=-1-min
16+
17+
const getResult=(val)=>{
18+
if(isNegative)
19+
return val<min?min:-val
20+
return val>max?max:val
21+
}
22+
23+
if(divisor===1)
24+
return getResult(dividend)
25+
26+
const multiples=[]
27+
let r=0, pow,exponent=1, multiple=divisor,remainder=dividend, tempRemainder
28+
29+
while(multiple<=dividend){
30+
multiples.push(multiple)
31+
multiple=Math.pow(divisor, ++exponent)
32+
}
33+
34+
while(multiples.length>0&&remainder>0)
35+
{
36+
multiple=multiples.pop()
37+
tempRemainder=remainder
38+
pow=Math.pow(divisor, multiples.length)
39+
40+
while((tempRemainder-=multiple)>=0){
41+
r+=pow
42+
remainder=tempRemainder
43+
}
44+
}
45+
46+
return getResult(r)
47+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* function ListNode(val, next) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.next = (next===undefined ? null : next)
6+
* }
7+
*/
8+
/**
9+
* @param {ListNode} head
10+
* @return {number[]}
11+
*/
12+
var nodesBetweenCriticalPoints = function(head) {
13+
let prevVal=head.val, currVal=null, nextVal=null
14+
15+
const criticalPos=[]
16+
const criticalDiff= new Array(2)
17+
counter=1
18+
19+
const checkVal=()=>{
20+
if((currVal>nextVal&&currVal>prevVal)||(currVal<nextVal&&currVal<prevVal))
21+
criticalPos.push(counter)
22+
}
23+
24+
while((head=head.next)!==null)
25+
{
26+
counter++
27+
28+
if(currVal!==null && nextVal!==null){
29+
prevVal=currVal
30+
currVal=nextVal
31+
nextVal=head.val
32+
33+
checkVal()
34+
}
35+
36+
else if(currVal===null)
37+
currVal=head.val
38+
39+
else{
40+
nextVal = head.val
41+
checkVal()
42+
}
43+
}
44+
45+
if(criticalPos.length<2)
46+
return [-1,-1]
47+
48+
criticalDiff[1]=criticalPos[criticalPos.length-1]-criticalPos[0]
49+
50+
let min=null
51+
for(let i=0, val;i< criticalPos.length-1;i++){
52+
val=criticalPos[i+1]-criticalPos[i]
53+
54+
if(val<min||min===null)
55+
min=val
56+
}
57+
criticalDiff[0]=min
58+
59+
return criticalDiff
60+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/**
2+
* @param {string[]} strs
3+
* @return {string}
4+
*/
5+
var longestCommonPrefix = function(strs) {
6+
let i, j,c, minLength
7+
8+
for(i=0;i<strs.length;i++)
9+
if(strs[i].length<minLength||minLength===undefined)
10+
minLength=strs[i].length
11+
12+
for(i=0;i<minLength;i++)
13+
{
14+
c=strs[0][i]
15+
16+
for(j=1;j<strs.length;j++)
17+
if(c!==strs[j][i])
18+
return strs[0].substr(0, i)
19+
}
20+
return strs[0].substr(0, i)
21+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* function ListNode(val, next) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.next = (next===undefined ? null : next)
6+
* }
7+
*/
8+
/**
9+
* @param {ListNode} list1
10+
* @param {ListNode} list2
11+
* @return {ListNode}
12+
*/
13+
var mergeTwoLists = function(list1, list2) {
14+
if(list1===null)
15+
return list2
16+
17+
if(list2===null)
18+
return list1
19+
20+
let head=null, list3
21+
22+
if(list2.val>=list1.val)
23+
{
24+
head=list3=list1
25+
list1=list1.next
26+
}
27+
else{
28+
head= list3=list2
29+
list2 =list2.next
30+
}
31+
32+
while(list2!==null) {
33+
while(list1!==null&&list2.val>=list1.val){
34+
list3=list3.next = list1
35+
list1=list1.next
36+
}
37+
38+
list3= list3.next=list2
39+
list2=list2.next
40+
}
41+
list3.next=list1
42+
43+
return head
44+
};
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* @param {number} x
3+
* @return {boolean}
4+
*/
5+
var isPalindrome = function(x) {
6+
if(x<0)
7+
return false
8+
if(x==0)
9+
return true
10+
11+
const numberStr=String(x)
12+
const numberStrLength=numberStr.length
13+
14+
for(let i=0;i<numberStrLength/2;i++)
15+
if(numberStr[i]!==numberStr[numberStrLength-1-i])
16+
return false
17+
return true
18+
};
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
var isValid = function(s) {
6+
const characters=[]
7+
8+
for(let c of s)
9+
if(c==='(')
10+
characters.push(c)
11+
else if(c==='[')
12+
characters.push(c)
13+
else if(c==='{')
14+
characters.push(c)
15+
else if(c===')'){
16+
if(characters.pop()!=='(')
17+
return false
18+
}
19+
else if(c===']'){
20+
if(characters.pop()!=='[')
21+
return false
22+
}
23+
else if(c==='}'){
24+
if(characters.pop()!=='{')
25+
return false
26+
}
27+
28+
return characters.length===0
29+
};

0 commit comments

Comments
 (0)