Skip to content

Commit cc98637

Browse files
authored
Merge pull request #680 from fartem/61_Rotate_List
2024-07-19 v. 6.2.3: added "61. Rotate List"
2 parents 25107d5 + 2fc30f3 commit cc98637

25 files changed

+81
-21
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -488,3 +488,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
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) |
490490
| 59. Spiral Matrix II | [Link](https://leetcode.com/problems/spiral-matrix-ii/) | [Link](./lib/medium/59_spiral_matrix_ii.rb) |
491+
| 61. Rotate ListII | [Link](https://leetcode.com/problems/rotate-list/) | [Link](./lib/medium/61_rotate_list.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.2'
8+
s.version = '6.2.3'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[bin/leetcode-ruby README.md LICENSE]
1111
s.executable = 'leetcode-ruby'

lib/common/linked_list.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def self.from_array(values)
2121
list.next = ::ListNode.new(value)
2222
list = list.next
2323
end
24+
2425
head
2526
end
2627

lib/medium/61_rotate_list.rb

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../common/linked_list'
4+
5+
# https://leetcode.com/problems/rotate-list/
6+
# @param {ListNode} head
7+
# @param {Integer} k
8+
# @return {ListNode}
9+
def rotate_right(head, k)
10+
size = 0
11+
p = head
12+
13+
until p.nil?
14+
p = p.next
15+
size += 1
16+
end
17+
18+
return head if size < 2 || size == k
19+
20+
places = k > size ? k % size : k
21+
22+
return head if places.zero?
23+
24+
div = head
25+
(0...(size - places - 1)).each { |_| div = div&.next }
26+
27+
old_head = head
28+
head = div&.next
29+
div&.next = nil
30+
last = head
31+
32+
last = last&.next until last&.next.nil?
33+
last&.next = old_head
34+
35+
head
36+
end

test/easy/test_100_same_tree.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# frozen_string_literal: true
22

33
require_relative '../test_helper'
4-
require_relative '../../lib/easy/100_same_tree'
54
require_relative '../../lib/common/binary_tree'
5+
require_relative '../../lib/easy/100_same_tree'
66
require 'minitest/autorun'
77

88
class SameTreeTest < ::Minitest::Test

test/easy/test_101_symmetric_tree.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# frozen_string_literal: true
22

33
require_relative '../test_helper'
4-
require_relative '../../lib/easy/101_symmetric_tree'
54
require_relative '../../lib/common/binary_tree'
5+
require_relative '../../lib/easy/101_symmetric_tree'
66
require 'minitest/autorun'
77

88
class SymmetricTreeTest < ::Minitest::Test

test/easy/test_104_maximum_depth_of_binary_tree.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# frozen_string_literal: true
22

33
require_relative '../test_helper'
4-
require_relative '../../lib/easy/104_maximum_depth_of_binary_tree'
54
require_relative '../../lib/common/binary_tree'
5+
require_relative '../../lib/easy/104_maximum_depth_of_binary_tree'
66
require 'minitest/autorun'
77

88
class MaximumDepthOfBinaryTreeTest < ::Minitest::Test

test/easy/test_108_convert_sorted_array_to_binary_search_tree.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# frozen_string_literal: true
22

33
require_relative '../test_helper'
4-
require_relative '../../lib/easy/108_convert_sorted_array_to_binary_search_tree'
54
require_relative '../../lib/common/binary_tree'
5+
require_relative '../../lib/easy/108_convert_sorted_array_to_binary_search_tree'
66
require 'minitest/autorun'
77

88
class ConvertSortedArrayToBinarySearchTreeTest < ::Minitest::Test

test/easy/test_110_balanced_binary_tree.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# frozen_string_literal: true
22

33
require_relative '../test_helper'
4-
require_relative '../../lib/easy/110_balanced_binary_tree'
54
require_relative '../../lib/common/binary_tree'
5+
require_relative '../../lib/easy/110_balanced_binary_tree'
66
require 'minitest/autorun'
77

88
class BalancedBinaryTreeTest < ::Minitest::Test

test/easy/test_111_minimum_depth_of_binary_tree.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# frozen_string_literal: true
22

33
require_relative '../test_helper'
4-
require_relative '../../lib/easy/111_minimum_depth_of_binary_tree'
54
require_relative '../../lib/common/binary_tree'
5+
require_relative '../../lib/easy/111_minimum_depth_of_binary_tree'
66
require 'minitest/autorun'
77

88
class MinimumDepthOfBinaryTreeTest < ::Minitest::Test

0 commit comments

Comments
 (0)