Skip to content

Commit 7b3dfa8

Browse files
committed
2024-07-15 v. 6.1.4: added "46. Permutations"
1 parent 9b06e51 commit 7b3dfa8

File tree

4 files changed

+58
-1
lines changed

4 files changed

+58
-1
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -479,3 +479,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
479479
| 38. Count and Say | [Link](https://leetcode.com/problems/count-and-say/) | [Link](./lib/medium/38_count_and_say.rb) |
480480
| 39. Combination Sum | [Link](https://leetcode.com/problems/combination-sum/) | [Link](./lib/medium/39_combination_sum.rb) |
481481
| 43. Multiply Strings | [Link](https://leetcode.com/problems/multiply-strings/) | [Link](./lib/medium/43_multiply_strings.rb) |
482+
| 46. Permutations | [Link](https://leetcode.com/problems/permutations/) | [Link](./lib/medium/46_permutations.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 = '6.1.3'
8+
s.version = '6.1.4'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[bin/leetcode-ruby README.md LICENSE]
1111
s.executable = 'leetcode-ruby'

lib/medium/46_permutations.rb

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# frozen_string_literal: true
2+
3+
# https://leetcode.com/problems/permutations/
4+
# @param {Integer[]} nums
5+
# @return {Integer[][]}
6+
def permute(nums)
7+
result = []
8+
permutations(nums, [], result, [])
9+
10+
result
11+
end
12+
13+
private
14+
15+
# @param {Integer[]} nums
16+
# @param {Integer[]} d_s
17+
# @param {Integer[]} result
18+
# @param {Boolean[]} freq
19+
def permutations(nums, d_s, result, freq)
20+
if d_s.length == nums.length
21+
result << d_s.clone
22+
else
23+
(0...nums.length).each do |i|
24+
next if freq[i]
25+
26+
freq[i] = true
27+
d_s << nums[i]
28+
permutations(nums, d_s, result, freq)
29+
d_s.delete_at(d_s.length - 1)
30+
freq[i] = false
31+
end
32+
end
33+
end

test/medium/test_46_permutations.rb

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/medium/46_permutations'
5+
require 'minitest/autorun'
6+
7+
class PermutationsTest < ::Minitest::Test
8+
def test_default
9+
assert_equal(
10+
[
11+
[1, 2, 3],
12+
[1, 3, 2],
13+
[2, 1, 3],
14+
[2, 3, 1],
15+
[3, 1, 2],
16+
[3, 2, 1]
17+
],
18+
permute([1, 2, 3])
19+
)
20+
assert_equal([[0, 1], [1, 0]], permute([0, 1]))
21+
assert_equal([[1]], permute([1]))
22+
end
23+
end

0 commit comments

Comments
 (0)