Skip to content

Commit 78634a9

Browse files
committed
2 parents 414f2ca + a0f7371 commit 78634a9

7 files changed

+166
-4
lines changed

Diff for: README.md

+4-4
Large diffs are not rendered by default.

Diff for: go/20-Valid-Parentheses.go

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
func isValid(s string) bool {
2+
pairs := map[byte]byte{
3+
'}': '{',
4+
']': '[',
5+
')': '(',
6+
}
7+
8+
stack := make([]byte, 0)
9+
10+
for _, char := range []byte(s) {
11+
pair, ok := pairs[char]
12+
if !ok {
13+
stack = append(stack, char)
14+
continue
15+
}
16+
17+
if len(stack) == 0 {
18+
return false
19+
}
20+
21+
if stack[len(stack) - 1] != pair {
22+
return false
23+
}
24+
25+
stack = stack[:len(stack) - 1]
26+
}
27+
28+
return len(stack) == 0
29+
}

Diff for: go/21-Merge-Two-Sorted-Lists.go

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* type ListNode struct {
4+
* Val int
5+
* Next *ListNode
6+
* }
7+
*/
8+
func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode {
9+
if l1 == nil {
10+
return l2
11+
}
12+
13+
if l2 == nil {
14+
return l1
15+
}
16+
17+
ptr1, ptr2 := l1, l2
18+
19+
result := new(ListNode)
20+
21+
temp := result
22+
23+
for ptr1 != nil && ptr2 != nil {
24+
if ptr1.Val < ptr2.Val {
25+
temp.Next = ptr1
26+
temp = temp.Next
27+
ptr1 = ptr1.Next
28+
} else {
29+
temp.Next = ptr2
30+
temp = temp.Next
31+
ptr2 = ptr2.Next
32+
}
33+
}
34+
35+
for ptr1 != nil{
36+
temp.Next = ptr1
37+
temp = temp.Next
38+
ptr1 = ptr1.Next
39+
}
40+
41+
for ptr2 != nil{
42+
temp.Next = ptr2
43+
temp = temp.Next
44+
ptr2 = ptr2.Next
45+
}
46+
47+
result = result.Next
48+
return result
49+
}

Diff for: kotlin/853-Car-Fleet.kt

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
fun carFleet(target: Int, position: IntArray, speed: IntArray): Int {
3+
val sortedPairs = position
4+
.zip(speed)
5+
.sortedBy { (position, _) -> position }
6+
var numberOfFleets = 1
7+
var timeRequiredForCarInFrontToReachInTarget =
8+
(target - sortedPairs[sortedPairs.lastIndex].first) / sortedPairs[sortedPairs.lastIndex].second.toFloat()
9+
var timeRequiredForCurrentCarToReachTarget: Float
10+
for (i in (sortedPairs.lastIndex - 1) downTo 0) {
11+
timeRequiredForCurrentCarToReachTarget = (target - sortedPairs[i].first) / sortedPairs[i].second.toFloat()
12+
if (timeRequiredForCurrentCarToReachTarget > timeRequiredForCarInFrontToReachInTarget) {
13+
// the current car requires more time to reach the destination
14+
// than the car in front of it.
15+
numberOfFleets++
16+
timeRequiredForCarInFrontToReachInTarget = timeRequiredForCurrentCarToReachTarget
17+
}
18+
}
19+
return numberOfFleets
20+
}
21+
}

Diff for: python/18-4Sum.py

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution:
2+
def fourSum(self, nums, target):
3+
def findNsum(l, r, target, N, result, results):
4+
if r-l+1 < N or N < 2 or target < nums[l]*N or target > nums[r]*N:
5+
return
6+
if N == 2:
7+
while l < r:
8+
s = nums[l] + nums[r]
9+
if s == target:
10+
results.append(result + [nums[l], nums[r]])
11+
l += 1
12+
while l < r and nums[l] == nums[l-1]:
13+
l += 1
14+
elif s < target:
15+
l += 1
16+
else:
17+
r -= 1
18+
else:
19+
for i in range(l, r+1):
20+
if i == l or (i > l and nums[i-1] != nums[i]):
21+
findNsum(i+1, r, target-nums[i], N-1, result+[nums[i]], results)
22+
23+
nums.sort()
24+
results = []
25+
findNsum(0, len(nums)-1, target, 4, [], results)
26+
return results

Diff for: ruby/0053-Maximum-Subarray.rb

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
def max_sub_array(nums)
2+
sum = 0
3+
max = -10 * 10 * 10 * 10 - 1
4+
5+
nums.each do |num|
6+
sum += num
7+
max = sum > max ? sum : max
8+
9+
sum = 0 if sum < 0
10+
end
11+
12+
max
13+
end

Diff for: ruby/78-Subsets.rb

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# @param {Integer[]} nums
2+
# @return {Integer[][]}
3+
def subsets(nums)
4+
ans = []
5+
6+
recurse(nums, ans, [], 0)
7+
8+
ans
9+
end
10+
11+
12+
def recurse(nums, ans, curr, i)
13+
if i == nums.length
14+
ans << curr.clone
15+
return
16+
end
17+
18+
19+
curr << nums[i]
20+
recurse(nums, ans, curr, i + 1)
21+
22+
curr.pop
23+
recurse(nums, ans, curr, i + 1)
24+
end

0 commit comments

Comments
 (0)