Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d645a24

Browse files
committed
first batch
1 parent dcd21c5 commit d645a24

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+1512
-0
lines changed

‎11_ContainerWithMostWater.js‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* @param {number[]} height
3+
* @return {number}
4+
*/
5+
var maxArea = function(height) {
6+
// we should move from left and right . on each step calculate area.
7+
// and then set max_area as Math.max(max_area, current_area)
8+
// if right pointer is bigger or equal move left or move right.
9+
// current_area = min(height[left], height[right]) * (right-left)
10+
11+
let left = 0;
12+
let right = height.length - 1;
13+
let result = 0;
14+
while(left<right){
15+
let current_area = Math.min(height[left],height[right])*(right-left)
16+
result = Math.max(result, current_area)
17+
if(height[right] >= height[left]){
18+
left++
19+
} else {
20+
right--
21+
}
22+
}
23+
return result
24+
};

‎11_ContainerWithMostWater.py‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution(object):
2+
def maxArea(self, height):
3+
"""
4+
:type height: List[int]
5+
:rtype: int
6+
"""
7+
start = 0
8+
end = len(height) - 1
9+
result = 0
10+
while start < end:
11+
area = (end-start) * min(height[start],height[end])
12+
13+
if height[end] < height[start]:
14+
end -= 1
15+
else :
16+
start += 1
17+
18+
result = max(result, area)
19+
return result

‎13_RomanToInteger.py‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution(object):
2+
def romanToInt(self, s):
3+
"""
4+
:type s: str
5+
:rtype: int
6+
"""
7+
digits_map = {
8+
'I':1,
9+
'V':5,
10+
'X':10,
11+
'L':50,
12+
'C':100,
13+
'D':500,
14+
'M':1000
15+
}
16+
sum = 0
17+
previous = 0
18+
for char in s[::-1]:
19+
current = digits_map[char]
20+
if(previous>current):
21+
sum = sum - current
22+
else:
23+
sum = sum + current
24+
previous = current
25+
return sum

‎15_3Sum.js‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number[][]}
4+
*/
5+
var threeSum = function(nums) {
6+
let result = [];
7+
let sum = 0;
8+
let sorted_arr = nums.sort((a,b)=>{
9+
return a-b;
10+
})
11+
for(let i = 0; i<sorted_arr.length;i++){
12+
if(i-1>=0 && nums[i] == nums[i-1]){continue}
13+
let j = i+1;
14+
let k = sorted_arr.length-1;
15+
while(j<k){
16+
if(sorted_arr[i]+sorted_arr[j]+sorted_arr[k]===sum){
17+
result.push([sorted_arr[i],sorted_arr[j],sorted_arr[k]]);
18+
j++;
19+
while(j<k && sorted_arr[j]===sorted_arr[j-1]) { j++ }
20+
} else if(sorted_arr[i]+sorted_arr[j]+sorted_arr[k] < sum){
21+
j++;
22+
} else {
23+
k--;
24+
}
25+
}
26+
}
27+
return result
28+
29+
};

‎15_3Sum.py‎

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
class Solution(object):
2+
def threeSum(self, nums):
3+
"""
4+
:type nums: List[int]
5+
:rtype: List[List[int]]
6+
"""
7+
result = []
8+
nums.sort()
9+
for first_index in xrange(len(nums)):
10+
if first_index - 1 >= 0 and nums[first_index] == nums[first_index-1]:
11+
continue
12+
start, end = first_index + 1, len(nums)-1
13+
while start < end :
14+
tmp_sum = nums[first_index] + nums[start] + nums[end]
15+
16+
if tmp_sum == 0:
17+
result.append([nums[first_index], nums[start], nums[end]])
18+
start += 1
19+
end -= 1
20+
while start < end and nums[start] == nums[start-1]:
21+
start+=1
22+
23+
elif tmp_sum < 0:
24+
start += 1
25+
else:
26+
end -= 1
27+
28+
return result
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* @param {string} digits
3+
* @return {string[]}
4+
*/
5+
var letterCombinations = function(digits) {
6+
let letters_dict = {
7+
'2': ['a','b','c'],
8+
'3': ['d','e','f'],
9+
'4': ['g','h','i'],
10+
'5': ['j','k','l'],
11+
'6': ['m','n','o'],
12+
'7': ['p','q','r','s'],
13+
'8': ['t','u','v'],
14+
'9': ['w','x','y','z']
15+
}
16+
let result = [];
17+
18+
function generate(result, letters_dict, digits, index, current){
19+
if(index == digits.length){
20+
result.push(current)
21+
return;
22+
}
23+
let curr_chars = letters_dict[digits.split('')[index]];
24+
for(let i = 0;i<curr_chars.length;i++){
25+
generate(result, letters_dict, digits, index+1, current+curr_chars[i])
26+
}
27+
}
28+
if(!digits){
29+
return result
30+
}
31+
generate(result, letters_dict, digits, 0, '')
32+
return result
33+
};
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class Solution(object):
2+
def letterCombinations(self, digits):
3+
"""
4+
:type digits: str
5+
:rtype: List[str]
6+
"""
7+
if len(digits) < 1:
8+
return []
9+
10+
letters_dict = {
11+
'2': ['a','b','c'],
12+
'3': ['d','e','f'],
13+
'4': ['g','h','i'],
14+
'5': ['j','k','l'],
15+
'6': ['m','n','o'],
16+
'7': ['p','q','r','s'],
17+
'8': ['t','u','v'],
18+
'9': ['w','x','y','z']
19+
}
20+
result = []
21+
def helper(current):
22+
if len(current) == len(digits):
23+
result.append(current)
24+
return
25+
26+
current_chars = letters_dict.get(digits[len(current)],[])
27+
28+
for char in current_chars:
29+
helper(current+char)
30+
31+
helper('')
32+
return result

‎18_4Sum.js‎

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} target
4+
* @return {number[][]}
5+
*/
6+
var fourSum = function(nums, target) {
7+
let result = [];
8+
nums = nums.sort((a,b)=>{
9+
return a-b;
10+
})
11+
12+
function findThreeSum(nums, target){
13+
let dict = {}
14+
let result = [];
15+
for(let i = 0;i<nums.length;i++){
16+
if(i>=0 && nums[i] === nums[i-1]){
17+
continue
18+
}
19+
let l_pointer = i+1;
20+
let r_pointer = nums.length-1;
21+
while(l_pointer < r_pointer){
22+
if(nums[i] + nums[l_pointer] + nums[r_pointer] === target){
23+
let tmp = [nums[i], nums[l_pointer], nums[r_pointer]]
24+
result.push(tmp)
25+
l_pointer++;
26+
while(l_pointer < r_pointer && nums[l_pointer] === nums[l_pointer-1]){
27+
l_pointer++
28+
}
29+
} else if(nums[i] + nums[l_pointer] + nums[r_pointer] < target){
30+
l_pointer++
31+
}
32+
if(nums[i] + nums[l_pointer] + nums[r_pointer] > target){
33+
r_pointer--;
34+
}
35+
36+
}
37+
}
38+
return result
39+
}
40+
41+
for(let i = 0;i<nums.length;i++){
42+
if(nums[i] === nums[i-1]){
43+
continue
44+
}
45+
let find_three = findThreeSum(nums.slice(i+1),target-nums[i])
46+
if(find_three.length > 0){
47+
for(let j = 0;j<find_three.length;j++){
48+
result.push([nums[i]].concat(find_three[j]))
49+
}
50+
}
51+
}
52+
return result;
53+
};

‎18_4Sum.py‎

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
class Solution(object):
2+
def fourSum(self, nums, target):
3+
"""
4+
:type nums: List[int]
5+
:type target: int
6+
:rtype: List[List[int]]
7+
"""
8+
nums.sort()
9+
result = []
10+
def three_sum_helper(nums, target):
11+
result = []
12+
for index in range(len(nums)):
13+
14+
if index>=1 and nums[index] == nums[index-1]:
15+
continue
16+
17+
start = index+1
18+
end = len(nums)-1
19+
20+
while start < end:
21+
if nums[index] + nums[start] + nums[end] == target:
22+
result.append([nums[index], nums[start], nums[end]])
23+
start += 1
24+
while start < end and nums[start] == nums[start-1]:
25+
start += 1
26+
elif nums[index] + nums[start] + nums[end] < target:
27+
start += 1
28+
else:
29+
end -= 1
30+
return result
31+
32+
for i in range(len(nums)):
33+
if i>=1 and nums[i] == nums[i-1]:
34+
continue
35+
36+
three_sum = three_sum_helper(nums[i+1:], target - nums[i])
37+
if len(three_sum) > 0:
38+
for item in three_sum:
39+
result.append([nums[i]] + item)
40+
41+
return result

‎1_TwoSum.js‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* @param {number[]} nums
3+
* @param {number} target
4+
* @return {number[]}
5+
*/
6+
var twoSum = function(nums, target) {
7+
let dict = {};
8+
let result = [];
9+
for(let i = 0; i < nums.length; i++){
10+
let key = target - nums[i];
11+
if(key in dict){
12+
return [dict[key],i]
13+
}
14+
dict[nums[i]] = i;
15+
}
16+
return result
17+
};

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /