Skip to content

Commit 25107d5

Browse files
authoredJul 19, 2024··
Merge pull request #679 from fartem/59_Spiral_Matrix_II
2024-07-19 v. 6.2.2: added "59. Spiral Matrix II"
2 parents 58b3f6c + 3eb0652 commit 25107d5

File tree

4 files changed

+85
-1
lines changed

4 files changed

+85
-1
lines changed
 

‎README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,3 +487,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
487487
| 55. Jump Game | [Link](https://leetcode.com/problems/jump-game/) | [Link](./lib/medium/55_jump_game.rb) |
488488
| 56. Merge Intervals | [Link](https://leetcode.com/problems/merge-intervals/) | [Link](./lib/medium/56_merge_intervals.rb) |
489489
| 57. Insert Interval | [Link](https://leetcode.com/problems/insert-interval/) | [Link](./lib/medium/57_insert_interval.rb) |
490+
| 59. Spiral Matrix II | [Link](https://leetcode.com/problems/spiral-matrix-ii/) | [Link](./lib/medium/59_spiral_matrix_ii.rb) |

‎leetcode-ruby.gemspec

Lines changed: 1 addition & 1 deletion
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.2.1'
8+
s.version = '6.2.2'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[bin/leetcode-ruby README.md LICENSE]
1111
s.executable = 'leetcode-ruby'

‎lib/medium/59_spiral_matrix_ii.rb

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# frozen_string_literal: true
2+
3+
# https://leetcode.com/problems/spiral-matrix-ii/
4+
# @param {Integer} n
5+
# @return {Integer[][]}
6+
def generate_matrix(n)
7+
i = 0
8+
j = 0
9+
up = 0
10+
right = 1
11+
left = 2
12+
down = 4
13+
14+
up_side = 0
15+
right_side = n
16+
left_side = -1
17+
down_side = n
18+
direction = right
19+
value = 0
20+
result = ::Array.new(n) { ::Array.new(n) { nil } }
21+
22+
while value < n * n
23+
if direction == up
24+
while i > up_side
25+
value += 1
26+
result[i][j] = value
27+
i -= 1
28+
end
29+
30+
i += 1
31+
j += 1
32+
up_side += 1
33+
direction = right
34+
elsif direction == right
35+
while j < right_side
36+
value += 1
37+
result[i][j] = value
38+
j += 1
39+
end
40+
41+
i += 1
42+
j -= 1
43+
right_side -= 1
44+
direction = down
45+
elsif direction == left
46+
while j > left_side
47+
value += 1
48+
result[i][j] = value
49+
j -= 1
50+
end
51+
52+
i -= 1
53+
j += 1
54+
left_side += 1
55+
direction = up
56+
else
57+
while i < down_side
58+
value += 1
59+
result[i][j] = value
60+
i += 1
61+
end
62+
63+
i -= 1
64+
j -= 1
65+
down_side -= 1
66+
direction = left
67+
end
68+
end
69+
70+
result
71+
end
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/medium/59_spiral_matrix_ii'
5+
require 'minitest/autorun'
6+
7+
class SpiralMatrixIITest < ::Minitest::Test
8+
def test_default
9+
assert_equal([[1, 2, 3], [8, 9, 4], [7, 6, 5]], generate_matrix(3))
10+
assert_equal([[1]], generate_matrix(1))
11+
end
12+
end

0 commit comments

Comments
 (0)
Please sign in to comment.