Skip to content

Commit 8199e18

Browse files
authored
Merge pull request #1919 from yhkee0404/main
[yhkee0404] WEEK 10 solutions
2 parents 30d566e + 69660f2 commit 8199e18

File tree

5 files changed

+141
-0
lines changed

5 files changed

+141
-0
lines changed

course-schedule/yhkee0404.swift

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class Solution {
2+
func canFinish(_ numCourses: Int, _ prerequisites: [[Int]]) -> Bool {
3+
var adj: [[Int]] = Array(repeating: [], count: numCourses)
4+
for ab in prerequisites {
5+
adj[ab[0]].append(ab[1])
6+
}
7+
var visited = Array(repeating: 0, count: numCourses)
8+
var stack = Array(0..<numCourses)
9+
while !stack.isEmpty {
10+
let u = stack.last!
11+
if visited[u] == 2 {
12+
stack.removeLast()
13+
continue
14+
} else if visited[u] == 1 {
15+
visited[u] = 2
16+
stack.removeLast()
17+
continue
18+
}
19+
visited[u] = 1
20+
for v in adj[u] {
21+
if visited[v] == 1 {
22+
return false
23+
}
24+
if visited[v] == 2 {
25+
continue
26+
}
27+
stack.append(v)
28+
}
29+
}
30+
return true
31+
}
32+
}

invert-binary-tree/yhkee0404.rs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Definition for a binary tree node.
2+
// #[derive(Debug, PartialEq, Eq)]
3+
// pub struct TreeNode {
4+
// pub val: i32,
5+
// pub left: Option<Rc<RefCell<TreeNode>>>,
6+
// pub right: Option<Rc<RefCell<TreeNode>>>,
7+
// }
8+
//
9+
// impl TreeNode {
10+
// #[inline]
11+
// pub fn new(val: i32) -> Self {
12+
// TreeNode {
13+
// val,
14+
// left: None,
15+
// right: None
16+
// }
17+
// }
18+
// }
19+
use std::rc::Rc;
20+
use std::cell::RefCell;
21+
impl Solution {
22+
pub fn invert_tree(root: Option<Rc<RefCell<TreeNode>>>) -> Option<Rc<RefCell<TreeNode>>> {
23+
if let Some(u) = &root {
24+
let mut u = u.borrow_mut();
25+
let v = u.left.clone();
26+
u.left = Self::invert_tree(u.right.clone());
27+
u.right = Self::invert_tree(v);
28+
}
29+
root
30+
}
31+
}

jump-game/yhkee0404.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution {
2+
bool canJump(List<int> nums) {
3+
for (int i = 0, j = 0; j < nums.length - 1; i++) {
4+
if (j < i) {
5+
return false;
6+
}
7+
j = max(i + nums[i], j);
8+
}
9+
return true;
10+
}
11+
}

merge-k-sorted-lists/yhkee0404.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* type ListNode struct {
4+
* Val int
5+
* Next *ListNode
6+
* }
7+
*/
8+
9+
type Heap []*ListNode
10+
11+
func (pq Heap) Len() int {return len(pq)}
12+
func (pq Heap) Less(i, j int) bool {
13+
return pq[i].Val < pq[j].Val
14+
}
15+
func (pq Heap) Swap(i, j int) {pq[i], pq[j] = pq[j], pq[i]}
16+
func (pq *Heap) Push(x any) {*pq = append(*pq, x.(*ListNode))}
17+
func (pq *Heap) Pop() any {
18+
x := (*pq)[len(*pq) - 1]
19+
*pq = (*pq)[:len(*pq) - 1]
20+
return x
21+
}
22+
23+
func mergeKLists(lists []*ListNode) *ListNode {
24+
h := Heap{}
25+
for _, l := range lists {
26+
if l != nil {
27+
h = append(h, l)
28+
}
29+
}
30+
heap.Init(&h)
31+
ans := ListNode{}
32+
u := &ans
33+
for len(h) > 0 { // T(n) = S(n) = O(nlogn)
34+
u.Next = heap.Pop(&h).(*ListNode)
35+
u = u.Next
36+
if u.Next != nil {
37+
heap.Push(&h, u.Next)
38+
}
39+
}
40+
return ans.Next
41+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
object Solution {
2+
def search(nums: Array[Int], target: Int): Int = {
3+
var l = 0
4+
var r = nums.length - 1
5+
while (l != r) {
6+
val mid = r - ((r - l) >> 1)
7+
if (nums(mid) > nums(0)) {
8+
l = mid
9+
} else {
10+
r = mid - 1
11+
}
12+
}
13+
l = r + 1
14+
r = l + nums.length
15+
while (l != r) {
16+
val mid = l + ((r - l) >> 1)
17+
if (nums(mid % nums.length) < target) {
18+
l = mid + 1
19+
} else {
20+
r = mid
21+
}
22+
}
23+
l %= nums.length
24+
if (nums(l) == target) l else -1
25+
}
26+
}

0 commit comments

Comments
 (0)