Skip to content

Commit 1a77484

Browse files
committed
2 parents 90437c0 + b269084 commit 1a77484

File tree

3 files changed

+180
-2
lines changed

3 files changed

+180
-2
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ If you would like to have collaborator permissions on the repo to merge your own
182182
<sub>[0024 - Swap Nodes In Pairs](https://leetcode.com/problems/swap-nodes-in-pairs/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](go%2F0024-swap-nodes-in-pairs.go)</div></sub> | <sub><div align='center'>[✔️](java%2F0024-swap-nodes-in-pairs.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](python%2F0024-swap-nodes-in-pairs.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
183183
<sub>[0148 - Sort List](https://leetcode.com/problems/sort-list/)</sub> | <sub><div align='center'>[✔️](c%2F0148-sort-list.c)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0148-sort-list.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](python%2F0148-sort-list.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
184184
<sub>[0086 - Partition List](https://leetcode.com/problems/partition-list/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0086-partition-list.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](python%2F0086-partition-list.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
185-
<sub>[0061 - Rotate List](https://leetcode.com/problems/rotate-list/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'></div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0061-rotate-list.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](python%2F0061-rotate-list.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
185+
<sub>[0061 - Rotate List](https://leetcode.com/problems/rotate-list/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](cpp%2F0061-rotate-list.cpp)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0061-rotate-list.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](python%2F0061-rotate-list.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
186186
<sub>[0092 - Reverse Linked List II](https://leetcode.com/problems/reverse-linked-list-ii/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](javascript%2F0092-reverse-linked-list-ii.js)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](python%2F0092-reverse-linked-list-ii.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
187187
<sub>[0622 - Design Circular Queue](https://leetcode.com/problems/design-circular-queue/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](go%2F0622-design-circular-queue.go)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0622-design-circular-queue.kt)</div></sub> | <sub><div align='center'>[✔️](python%2F0622-design-circular-queue.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
188188
<sub>[0147 - Insertion Sort List](https://leetcode.com/problems/insertion-sort-list/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](python%2F0147-insertion-sort-list.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
@@ -364,7 +364,7 @@ If you would like to have collaborator permissions on the repo to merge your own
364364
<sub>[5782 - Maximum Alternating Subsequence Sum](https://leetcode.com/problems/maximum-alternating-subsequence-sum/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
365365
<sub>[0115 - Distinct Subsequences](https://leetcode.com/problems/distinct-subsequences/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](cpp%2F0115-distinct-subsequences.cpp)</div></sub> | <sub><div align='center'>[✔️](csharp%2F0115-distinct-subsequences.cs)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0115-distinct-subsequences.java)</div></sub> | <sub><div align='center'>[✔️](javascript%2F0115-distinct-subsequences.js)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](python%2F0115-distinct-subsequences.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](typescript%2F0115-distinct-subsequences.ts)</div></sub>
366366
<sub>[0072 - Edit Distance](https://leetcode.com/problems/edit-distance/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](cpp%2F0072-edit-distance.cpp)</div></sub> | <sub><div align='center'>[✔️](csharp%2F0072-edit-distance.cs)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0072-edit-distance.java)</div></sub> | <sub><div align='center'>[✔️](javascript%2F0072-edit-distance.js)</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0072-edit-distance.kt)</div></sub> | <sub><div align='center'>[✔️](python%2F0072-edit-distance.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](scala%2F0072-edit-distance.scala)</div></sub> | <sub><div align='center'>[✔️](swift%2F0072-edit-distance.swift)</div></sub> | <sub><div align='center'>❌</div></sub>
367-
<sub>[1220 - Count Vowels Permutation](https://leetcode.com/problems/count-vowels-permutation/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'></div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](go%2F1220-count-vowels-permutation.go)</div></sub> | <sub><div align='center'>[✔️](java%2F1220-Count-Vowels-Permutation.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](python%2F1220-count-vowels-permutation.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
367+
<sub>[1220 - Count Vowels Permutation](https://leetcode.com/problems/count-vowels-permutation/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](cpp%2F1220-count-vowels-permutation.cpp)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](go%2F1220-count-vowels-permutation.go)</div></sub> | <sub><div align='center'>[✔️](java%2F1220-Count-Vowels-Permutation.java)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](python%2F1220-count-vowels-permutation.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
368368
<sub>[0312 - Burst Balloons](https://leetcode.com/problems/burst-balloons/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](cpp%2F0312-burst-balloons.cpp)</div></sub> | <sub><div align='center'>[✔️](csharp%2F0312-burst-balloons.cs)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](java%2F0312-burst-balloons.java)</div></sub> | <sub><div align='center'>[✔️](javascript%2F0312-burst-balloons.js)</div></sub> | <sub><div align='center'>[✔️](kotlin%2F0312-burst-balloons.kt)</div></sub> | <sub><div align='center'>[✔️](python%2F0312-burst-balloons.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](typescript%2F0312-burst-balloons.ts)</div></sub>
369369
<sub>[1866 - Number of Ways to Rearrange Sticks With K Sticks Visible](https://leetcode.com/problems/number-of-ways-to-rearrange-sticks-with-k-sticks-visible/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub>
370370
<sub>[0010 - Regular Expression Matching](https://leetcode.com/problems/regular-expression-matching/)</sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](cpp%2F0010-regular-expression-matching.cpp)</div></sub> | <sub><div align='center'>[✔️](csharp%2F0010-regular-expression-matching.cs)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](go%2F0010-regular-expression-matching.go)</div></sub> | <sub><div align='center'>[✔️](java%2F0010-regular-expression-matching.java)</div></sub> | <sub><div align='center'>[✔️](javascript%2F0010-regular-expression-matching.js)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](python%2F0010-regular-expression-matching.py)</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>❌</div></sub> | <sub><div align='center'>[✔️](typescript%2F0010-regular-expression-matching.ts)</div></sub>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
Given an integer n, our task is to count how many strings of length n can be formed under the following rules:
3+
4+
Each character is a lower case vowel ('a', 'e', 'i', 'o', 'u')
5+
Each vowel 'a' may only be followed by an 'e'.
6+
Each vowel 'e' may only be followed by an 'a' or an 'i'.
7+
Each vowel 'i' may not be followed by another 'i'.
8+
Each vowel 'o' may only be followed by an 'i' or a 'u'.
9+
Each vowel 'u' may only be followed by an 'a'.
10+
Since the answer may be too large, we have to return it modulo 10^9 + 7.
11+
12+
Example. For n = 2, Output = 10
13+
14+
Explanation: All possible strings of length 2 that can be formed as per the given rules are: "ae", "ea", "ei", "ia", "ie", "io", "iu",
15+
"oi", "ou" and "ua".
16+
So we return 10 as our answer.
17+
18+
19+
Time: O(n)
20+
Space: O(1)
21+
22+
*/
23+
24+
25+
class Solution {
26+
const unsigned int mod = 1e9+7;
27+
public:
28+
int countVowelPermutation(int n) {
29+
vector<int> prev(5,1), curr(5, 0);
30+
for(int i=1; i<n; i++) {
31+
curr[0] = prev[1] % mod;
32+
curr[1] = (prev[0] + prev[2]) % mod;
33+
curr[2] = ((prev[0] % mod) + (prev[1] % mod) + (prev[3] % mod) + (prev[4] % mod)) % mod;
34+
curr[3] = (prev[4] + prev[2]) % mod;
35+
curr[4] = prev[0] % mod;
36+
prev = curr;
37+
}
38+
int ans = 0;
39+
for(auto &a:prev) ans = (ans + a) % mod;
40+
return ans;
41+
}
42+
};

kotlin/0912-sort-an-array.kt

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
/*
2+
* Merge sort
3+
*/
4+
class Solution {
5+
fun sortArray(nums: IntArray): IntArray {
6+
mergeSort(nums, 0, nums.lastIndex)
7+
return nums
8+
}
9+
10+
private fun mergeSort(nums: IntArray, left: Int, right: Int) {
11+
if(left == right) return
12+
13+
val mid = (left + right) / 2
14+
mergeSort(nums, left, mid)
15+
mergeSort(nums, mid + 1, right)
16+
merge(nums, left, mid, right)
17+
18+
return
19+
}
20+
21+
private fun merge(nums: IntArray, left: Int, mid: Int, right: Int) {
22+
val leftPart = nums.copyOfRange(left, mid + 1)
23+
val rightPart = nums.copyOfRange(mid + 1, right + 1)
24+
var i = left
25+
var j = 0
26+
var k = 0
27+
28+
while(j < leftPart.size && k < rightPart.size) {
29+
if(leftPart[j] <= rightPart[k]) {
30+
nums[i] = leftPart[j]
31+
j++
32+
}else{
33+
nums[i] = rightPart[k]
34+
k++
35+
}
36+
i++
37+
}
38+
39+
while(j < leftPart.size) {
40+
nums[i] = leftPart[j]
41+
j++
42+
i++
43+
}
44+
45+
while(k < rightPart.size) {
46+
nums[i] = rightPart[k]
47+
k++
48+
i++
49+
}
50+
}
51+
}
52+
53+
/*
54+
* Quick sort
55+
* This will fail testcase 17/19 (used to pass earlier, before adding new testcases), I still added it here for interest.
56+
* It fails on test case where we have an array with many elements of which all are 2's. This will have quicksort to run as
57+
* its worst case, which is O(n^2). But on average this will run O(nlogn)
58+
*/
59+
class Solution {
60+
fun sortArray(nums: IntArray): IntArray {
61+
62+
quickSort(nums, 0, nums.lastIndex)
63+
return nums
64+
}
65+
66+
private fun quickSort(nums: IntArray, low: Int, high: Int) {
67+
if (low < high) {
68+
val pivotIndex = partition(nums, low, high)
69+
quickSort(nums, low, pivotIndex - 1)
70+
quickSort(nums, pivotIndex + 1, high)
71+
}
72+
}
73+
74+
private fun partition(nums: IntArray, low: Int, high: Int): Int {
75+
val pivot = nums[high]
76+
var i = low
77+
78+
for(j in low until high) {
79+
if (nums[j] <= pivot) {
80+
nums.swap(i, j)
81+
i++
82+
}
83+
}
84+
85+
nums.swap(i, high)
86+
return i
87+
}
88+
89+
fun IntArray.swap(i: Int, j: Int) {
90+
this[i] = this[j].also{ this[j] = this[i] }
91+
}
92+
}
93+
94+
/*
95+
* Heap sort
96+
*/
97+
class Solution {
98+
fun sortArray(nums: IntArray): IntArray {
99+
100+
heapSort(nums)
101+
return nums
102+
}
103+
104+
private fun heapSort(nums: IntArray) {
105+
val n = nums.size
106+
107+
for(i in (n/2 - 1) downTo 0)
108+
heapify(nums, n, i)
109+
110+
for(i in n-1 downTo 0) {
111+
nums.swap(0, i)
112+
heapify(nums, i, 0)
113+
}
114+
}
115+
116+
private fun heapify(nums: IntArray, n: Int, i: Int) {
117+
var largest = i
118+
119+
val left = 2 * i + 1
120+
val right = 2 * i + 2
121+
122+
if(left < n && nums[left] > nums[largest])
123+
largest = left
124+
if(right < n && nums[right] > nums[largest])
125+
largest = right
126+
127+
if(largest != i) {
128+
nums.swap(i, largest)
129+
heapify(nums, n, largest)
130+
}
131+
}
132+
133+
fun IntArray.swap(i: Int, j: Int) {
134+
this[i] = this[j].also{ this[j] = this[i] }
135+
}
136+
}

0 commit comments

Comments
 (0)