Skip to content

Commit 3455313

Browse files
committed
feat: 141. Linked List Cycle
1 parent 1bf2f86 commit 3455313

14 files changed

Lines changed: 386 additions & 2 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package PascalsTriangleII
2+
3+
//Given an index k, return the kth row of the Pascal's triangle.
4+
//
5+
//For example, given k = 3,
6+
//Return [1,3,3,1].
7+
//
8+
//Note:
9+
//Could you optimize your algorithm to use only O(k) extra space?
10+
//
11+
//Accepted.
12+
13+
func getRow(rowIndex int) []int {
14+
results := make([]int, 0)
15+
results = append(results, 1)
16+
17+
if rowIndex == 0 {
18+
return results
19+
}
20+
21+
for i := 0; i < rowIndex; i++ {
22+
results = append(results, 1)
23+
for j := len(results) - 2; j > 0; j-- {
24+
results[j] = results[j-1] + results[j]
25+
}
26+
}
27+
28+
return results
29+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package PascalsTriangleII
2+
3+
import (
4+
"testing"
5+
"reflect"
6+
)
7+
8+
func TestGetRow(t *testing.T) {
9+
10+
if reflect.DeepEqual(
11+
getRow(0),
12+
[]int{1,}) {
13+
t.Log("pass")
14+
} else {
15+
t.Error("failed")
16+
}
17+
18+
if reflect.DeepEqual(
19+
getRow(1),
20+
[]int{1, 1,}) {
21+
t.Log("pass")
22+
} else {
23+
t.Error("failed")
24+
}
25+
26+
if reflect.DeepEqual(
27+
getRow(2),
28+
[]int{1, 2, 1,}) {
29+
t.Log("pass")
30+
} else {
31+
t.Error("failed")
32+
}
33+
34+
if reflect.DeepEqual(
35+
getRow(3),
36+
[]int{1, 3, 3, 1,}) {
37+
t.Log("pass")
38+
} else {
39+
t.Error("failed")
40+
}
41+
42+
if reflect.DeepEqual(
43+
getRow(4),
44+
[]int{1, 4, 6, 4, 1,}) {
45+
t.Log("pass")
46+
} else {
47+
t.Error("failed")
48+
}
49+
50+
}

Java/src/PascalsTriangleII.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
4+
/**
5+
* Given an index k, return the kth row of the Pascal's triangle.
6+
* <p>
7+
* For example, given k = 3,
8+
* Return [1,3,3,1].
9+
* <p>
10+
* Note:
11+
* Could you optimize your algorithm to use only O(k) extra space?
12+
* <p>
13+
* Accepted.
14+
*/
15+
16+
public class PascalsTriangleII {
17+
18+
public List<Integer> getRow(int rowIndex) {
19+
List<Integer> results = new ArrayList<>();
20+
results.add(1);
21+
22+
if (rowIndex == 0) {
23+
return results;
24+
}
25+
26+
for (int i = 0; i < rowIndex; i++) {
27+
results.add(1);
28+
for (int j = results.size() - 2; j > 0; j--) {
29+
results.set(j, results.get(j - 1) + results.get(j));
30+
}
31+
}
32+
33+
return results;
34+
}
35+
36+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import org.junit.Assert;
2+
import org.junit.Test;
3+
4+
import java.util.Arrays;
5+
import java.util.Collections;
6+
7+
public class PascalsTriangleIITest {
8+
9+
@Test
10+
public void testGetRow() {
11+
PascalsTriangleII p = new PascalsTriangleII();
12+
13+
Assert.assertEquals(p.getRow(0), Collections.singletonList(1));
14+
15+
Assert.assertEquals(p.getRow(1), Arrays.asList(1, 1));
16+
17+
Assert.assertEquals(p.getRow(2), Arrays.asList(1, 2, 1));
18+
19+
Assert.assertEquals(p.getRow(3), Arrays.asList(1, 3, 3, 1));
20+
21+
Assert.assertEquals(p.getRow(4), Arrays.asList(1, 4, 6, 4, 1));
22+
}
23+
24+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/**
2+
* Given an index k, return the kth row of the Pascal's triangle.
3+
*
4+
* For example, given k = 3,
5+
* Return [1,3,3,1].
6+
*
7+
* Note:
8+
* Could you optimize your algorithm to use only O(k) extra space?
9+
*
10+
* Accepted.
11+
*/
12+
13+
/**
14+
* @param {number} rowIndex
15+
* @return {number[]}
16+
*/
17+
let getRow = function (rowIndex) {
18+
let results = [];
19+
results.push(1);
20+
21+
if (rowIndex === 0) {
22+
return results;
23+
}
24+
25+
for (let i = 0; i < rowIndex; i++) {
26+
results.push(1);
27+
for (let j = results.length - 2; j > 0; j--) {
28+
results[j] = results[j - 1] + results[j];
29+
}
30+
}
31+
32+
return results;
33+
};
34+
35+
36+
if (getRow(0).toString() === [1].toString()) {
37+
console.log("pass")
38+
} else {
39+
console.error("failed")
40+
}
41+
42+
if (getRow(1).toString() === [1, 1].toString()) {
43+
console.log("pass")
44+
} else {
45+
console.error("failed")
46+
}
47+
48+
if (getRow(2).toString() === [1, 2, 1].toString()) {
49+
console.log("pass")
50+
} else {
51+
console.error("failed")
52+
}
53+
54+
if (getRow(3).toString() === [1, 3, 3, 1].toString()) {
55+
console.log("pass")
56+
} else {
57+
console.error("failed")
58+
}
59+
60+
if (getRow(4).toString() === [1, 4, 6, 4, 1].toString()) {
61+
console.log("pass")
62+
} else {
63+
console.error("failed")
64+
}

Kotlin/src/PascalsTriangleII.kt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/**
2+
* Given an index k, return the kth row of the Pascal's triangle.
3+
*
4+
* For example, given k = 3,
5+
* Return [1,3,3,1].
6+
*
7+
* Note:
8+
* Could you optimize your algorithm to use only O(k) extra space?
9+
*
10+
* Accepted.
11+
*/
12+
13+
class PascalsTriangleII {
14+
15+
fun getRow(rowIndex: Int): List<Int> {
16+
val results = mutableListOf(1)
17+
18+
if (rowIndex == 0) {
19+
return results
20+
}
21+
22+
for (i in 0 until rowIndex) {
23+
results.add(1)
24+
for (j in results.size - 2 downTo 1) {
25+
results[j] = results[j - 1] + results[j]
26+
}
27+
}
28+
29+
return results
30+
}
31+
32+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import org.junit.Assert
2+
import org.junit.Test
3+
4+
class PascalsTriangleIITest {
5+
6+
@Test
7+
fun testGetRow() {
8+
val p = PascalsTriangleII()
9+
10+
Assert.assertEquals(p.getRow(0), listOf(1))
11+
12+
Assert.assertEquals(p.getRow(1), listOf(1, 1))
13+
14+
Assert.assertEquals(p.getRow(2), listOf(1, 2, 1))
15+
16+
Assert.assertEquals(p.getRow(3), listOf(1, 3, 3, 1))
17+
18+
Assert.assertEquals(p.getRow(4), listOf(1, 4, 6, 4, 1))
19+
}
20+
21+
}

Python/PascalsTriangleII.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Given an index k, return the kth row of the Pascal's triangle.
2+
#
3+
# For example, given k = 3,
4+
# Return [1,3,3,1].
5+
#
6+
# Note:
7+
# Could you optimize your algorithm to use only O(k) extra space?
8+
#
9+
# Python, Python3 all accepted.
10+
11+
12+
class PascalsTriangleII:
13+
def getRow(self, rowIndex):
14+
"""
15+
:type rowIndex: int
16+
:rtype: List[int]
17+
"""
18+
results = [1]
19+
20+
if rowIndex == 0:
21+
return results
22+
23+
for i in range(rowIndex):
24+
results.append(1)
25+
for j in range(len(results) - 2, 0, -1):
26+
results[j] = results[j - 1] + results[j]
27+
28+
return results

Python/PascalsTriangleIITests.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from unittest import TestCase
2+
3+
from PascalsTriangleII import PascalsTriangleII
4+
5+
6+
class TestPascalsTriangleII(TestCase):
7+
def test_getRow(self):
8+
p = PascalsTriangleII()
9+
10+
self.assertEqual(p.getRow(0), [1])
11+
12+
self.assertEqual(p.getRow(1), [1, 1])
13+
14+
self.assertEqual(p.getRow(2), [1, 2, 1])
15+
16+
self.assertEqual(p.getRow(3), [1, 3, 3, 1])
17+
18+
self.assertEqual(p.getRow(4), [1, 4, 6, 4, 1])

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
My Solutions for LeetCode problems written in Go, Java, JavaScript, Kotlin, Python and Swift.
44

5-
Progress: **84 / 752**
5+
Progress: **85 / 752**
66

77
## Solutions
88
| # | Title | Go | Java | JavaScript | Kotlin | Python | Swift | Difficulty |
@@ -88,9 +88,10 @@ Progress: **84 / 752**
8888
| 104 | [Maximum Depth of Binary Tree](https://leetcode.com/problems/maximum-depth-of-binary-tree/description/) | [](Golang/MaximumDepthOfBinaryTree/MaximumDepthOfBinaryTree.go) | [](Java/src/MaximumDepthOfBinaryTree.java) | [](JavaScript/src/MaximumDepthOfBinaryTree.js) | [](Kotlin/src/MaximumDepthOfBinaryTree.kt) | [](Python/MaximumDepthOfBinaryTree.py) | [](Swift/LeetCode/LeetCode/MaximumDepthOfBinaryTree.swift) | Easy |
8989
| 107 | [Binary Tree Level Order Traversal II](https://leetcode.com/problems/binary-tree-level-order-traversal-ii/description/) | [](Golang/BinaryTreeLevelOrderTraversalII/BinaryTreeLevelOrderTraversalII.go) | [](Java/src/BinaryTreeLevelOrderTraversalII.java) | [](JavaScript/src/BinaryTreeLevelOrderTraversalII.js) | [](Kotlin/src/BinaryTreeLevelOrderTraversalII.kt) | [](Python/BinaryTreeLevelOrderTraversalII.py) | [](Swift/LeetCode/LeetCode/BinaryTreeLevelOrderTraversalII.swift) | Easy |
9090
| 118 | [Pascal's Triangle](https://leetcode.com/problems/pascals-triangle/description/) | [](Golang/PascalsTriangle/PascalsTriangle.go) | [](Java/src/PascalsTriangle.java) | [](JavaScript/src/PascalsTriangle.js) | [](Kotlin/src/PascalsTriangle.kt) | [](Python/PascalsTriangle.py) | [](Swift/LeetCode/LeetCode/PascalsTriangle.swift) | Easy |
91+
| 119 | [Pascal's Triangle II](https://leetcode.com/problems/pascals-triangle-ii/description/) | [](Golang/PascalsTriangleII/PascalsTriangleII.go) | [](Java/src/PascalsTriangleII.java) | [](JavaScript/src/PascalsTriangleII.js) | [](Kotlin/src/PascalsTriangleII.kt) | [](Python/PascalsTriangleII.py) | [](Swift/LeetCode/LeetCode/PascalsTriangleII.swift) | Easy |
9192
| 136 | [Single Number](https://leetcode.com/problems/single-number/description/) | [](Golang/SingleNumber/SingleNumber.go) | [](Java/src/SingleNumber.java) | [](JavaScript/src/SingleNumber.js) | [](Kotlin/src/SingleNumber.kt) | [](Python/SingleNumber.py) | [](Swift/LeetCode/LeetCode/SingleNumber.swift) | Easy |
9293
| 137 | [Single Number II](https://leetcode.com/problems/single-number-ii/description/) | [](Golang/SingleNumberII/SingleNumberII.go) | [](Java/src/SingleNumberII.java) | [](JavaScript/src/SingleNumberII.js) | [](Kotlin/src/SingleNumberII.kt) | [](Python/SingleNumberII.py) | [](Swift/LeetCode/LeetCode/SingleNumberII.swift) | Medium |
93-
| 141 | [Linked List Cycle](https://leetcode.com/problems/linked-list-cycle/description/) | [](Golang/LinkedListCycle/LinkedListCycle.go) | [](Java/src/LinkedListCycle.java) | [](JavaScript/src/LinkedListCycle.js) | [](Kotlin/src/LinkedListCycle.kt) | [](Python/LinkedListCycle.py) | [](Swift/LeetCode/LeetCode/LinkedListCycle.swift) | Easy |
94+
| 141 | [Linked List Cycle](https://leetcode.com/problems/linked-list-cycle/description/) | [?](Golang/LinkedListCycle/LinkedListCycle.go) | [](Java/src/LinkedListCycle.java) | [](JavaScript/src/LinkedListCycle.js) | [?](Kotlin/src/LinkedListCycle.kt) | [](Python/LinkedListCycle.py) | [?](Swift/LeetCode/LeetCode/LinkedListCycle.swift) | Easy |
9495

9596
## Contributions
9697
⚠️ Notice: We do **NOT** accept pull requests currently.

0 commit comments

Comments
 (0)