Skip to content

Commit f3c26b8

Browse files
authored
2024-12-31 v. 7.5.7: added "797. All Paths From Source to Target"
2 parents 96cd243 + e9bfb5c commit f3c26b8

File tree

4 files changed

+78
-1
lines changed

4 files changed

+78
-1
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -621,3 +621,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
621621
| 739. Daily Temperatures | [Link](https://leetcode.com/problems/daily-temperatures/) | [Link](./lib/medium/739_daily_temperatures.rb) | [Link](./test/medium/test_739_daily_temperatures.rb) |
622622
| 763. Partition Labels | [Link](https://leetcode.com/problems/partition-labels/) | [Link](./lib/medium/763_partition_labels.rb) | [Link](./test/medium/test_763_partition_labels.rb) |
623623
| 784. Letter Case Permutation | [Link](https://leetcode.com/problems/letter-case-permutation/) | [Link](./lib/medium/784_letter_case_permutation.rb) | [Link](./test/medium/test_784_letter_case_permutation.rb) |
624+
| 797. All Paths From Source to Target | [Link](https://leetcode.com/problems/all-paths-from-source-to-target/) | [Link](./lib/medium/797_all_paths_from_source_to_target.rb) | [Link](./test/medium/test_797_all_paths_from_source_to_target.rb) |

leetcode-ruby.gemspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ require 'English'
55
::Gem::Specification.new do |s|
66
s.required_ruby_version = '>= 3.0'
77
s.name = 'leetcode-ruby'
8-
s.version = '7.5.6'
8+
s.version = '7.5.7'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# frozen_string_literal: true
2+
3+
# https://leetcode.com/problems/all-paths-from-source-to-target/
4+
# @param {Integer[][]} graph
5+
# @return {Integer[][]}
6+
def all_paths_source_target(graph)
7+
result = []
8+
fill_paths_for_all_paths_source_target(result, [0], graph, 0)
9+
10+
result
11+
end
12+
13+
private
14+
15+
# @param {Integer[][]} result
16+
# @param {Integer[]} list
17+
# @param {Integer[][]} graph
18+
# @param {Integer} start
19+
# @return {Void}
20+
def fill_paths_for_all_paths_source_target(result, list, graph, start)
21+
if start == graph.size - 1
22+
result << list.clone
23+
else
24+
(0...graph[start].size).each do |i|
25+
curr = graph[start][i]
26+
list << curr
27+
fill_paths_for_all_paths_source_target(result, list, graph, curr)
28+
list.delete_at(list.size - 1)
29+
end
30+
end
31+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/medium/797_all_paths_from_source_to_target'
5+
require 'minitest/autorun'
6+
7+
class AllPathsFromSourceToTargetTest < ::Minitest::Test
8+
def test_default_one
9+
assert_equal(
10+
[
11+
[0, 1, 3],
12+
[0, 2, 3]
13+
],
14+
all_paths_source_target(
15+
[
16+
[1, 2],
17+
[3],
18+
[3],
19+
[]
20+
]
21+
)
22+
)
23+
end
24+
25+
def test_default_two
26+
assert_equal(
27+
[
28+
[0, 4],
29+
[0, 3, 4],
30+
[0, 1, 3, 4],
31+
[0, 1, 2, 3, 4],
32+
[0, 1, 4]
33+
],
34+
all_paths_source_target(
35+
[
36+
[4, 3, 1],
37+
[3, 2, 4],
38+
[3],
39+
[4],
40+
[]
41+
]
42+
)
43+
)
44+
end
45+
end

0 commit comments

Comments
 (0)