File tree Expand file tree Collapse file tree 4 files changed +87
-1
lines changed Expand file tree Collapse file tree 4 files changed +87
-1
lines changed Original file line number Diff line number Diff line change @@ -634,3 +634,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
634634| 4. Median of Two Sorted Arrays | [ Link] ( https://leetcode.com/problems/median-of-two-sorted-arrays/ ) | [ Link] ( ./lib/hard/4_median_of_two_sorted_arrays.rb ) | [ Link] ( ./test/hard/test_4_median_of_two_sorted_arrays.rb ) |
635635| 10. Regular Expression Matching | [ Link] ( https://leetcode.com/problems/regular-expression-matching/ ) | [ Link] ( ./lib/hard/10_regular_expression_matching.rb ) | [ Link] ( ./test/hard/test_10_regular_expression_matching.rb ) |
636636| 23. Merge k Sorted Lists | [ Link] ( https://leetcode.com/problems/merge-k-sorted-lists/ ) | [ Link] ( ./lib/hard/23_merge_k_sorted_lists.rb ) | [ Link] ( ./test/hard/test_23_merge_k_sorted_lists.rb ) |
637+ | 25. Reverse Nodes in k-Group | [ Link] ( https://leetcode.com/problems/reverse-nodes-in-k-group/ ) | [ Link] ( ./lib/hard/25_reverse_nodes_in_k_group.rb ) | [ Link] ( ./test/hard/test_25_reverse_nodes_in_k_group.rb ) |
Original file line number Diff line number Diff 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.6.4 '
8+ s . version = '7.6.5 '
99 s . license = 'MIT'
1010 s . files = ::Dir [ 'lib/**/*.rb' ] + %w[ README.md ]
1111 s . executable = 'leetcode-ruby'
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ # https://leetcode.com/problems/reverse-nodes-in-k-group/
4+ # @param {ListNode} head
5+ # @param {Integer} k
6+ # @return {ListNode}
7+ def reverse_k_group ( head , k )
8+ return unless head
9+
10+ return head unless has_next_for_reverse_k_group ( head , k )
11+
12+ prev = nil
13+ curr = head
14+ nxt = nil
15+ count = 0
16+
17+ while curr && count < k
18+ nxt = curr . next
19+ curr . next = prev
20+ prev = curr
21+ curr = nxt
22+
23+ count += 1
24+ end
25+
26+ head . next = reverse_k_group ( nxt , k )
27+
28+ prev
29+ end
30+
31+ private
32+
33+ # @param {ListNode} head
34+ # @param {Integer} k
35+ # @return {Boolean}
36+ def has_next_for_reverse_k_group ( head , k )
37+ count = 0
38+ p = head
39+ while count != k && !p . nil?
40+ p = p . next
41+ count += 1
42+ end
43+
44+ count == k
45+ end
Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ require_relative '../test_helper'
4+ require_relative '../../lib/common/linked_list'
5+ require_relative '../../lib/hard/25_reverse_nodes_in_k_group'
6+ require 'minitest/autorun'
7+
8+ class ReverseNodesInKGroupTest < ::Minitest ::Test
9+ def test_default_one
10+ assert (
11+ ::ListNode . are_equals (
12+ ::ListNode . from_array (
13+ [ 2 , 1 , 4 , 3 , 5 ]
14+ ) ,
15+ reverse_k_group (
16+ ::ListNode . from_array (
17+ [ 1 , 2 , 3 , 4 , 5 ]
18+ ) ,
19+ 2
20+ )
21+ )
22+ )
23+ end
24+
25+ def test_default_two
26+ assert (
27+ ::ListNode . are_equals (
28+ ::ListNode . from_array (
29+ [ 3 , 2 , 1 , 4 , 5 ]
30+ ) ,
31+ reverse_k_group (
32+ ::ListNode . from_array (
33+ [ 1 , 2 , 3 , 4 , 5 ]
34+ ) ,
35+ 3
36+ )
37+ )
38+ )
39+ end
40+ end
You can’t perform that action at this time.
0 commit comments