Skip to content

Commit b854c17

Browse files
committed
2025-03-04 v. 8.8.0: added "1721. Swapping Nodes in a Linked List"
1 parent ac3ea8a commit b854c17

File tree

5 files changed

+67
-2
lines changed

5 files changed

+67
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,7 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
713713
| 1679. Max Number of K-Sum Pairs | [Link](https://leetcode.com/problems/max-number-of-k-sum-pairs/) | [Link](./lib/medium/1679_max_number_of_k_sum_pairs.rb) | [Link](./test/medium/test_1679_max_number_of_k_sum_pairs.rb) |
714714
| 1685. Sum of Absolute Differences in a Sorted Array | [Link](https://leetcode.com/problems/sum-of-absolute-differences-in-a-sorted-array/) | [Link](./lib/medium/1685_sum_of_absolute_differences_in_a_sorted_array.rb) | [Link](./test/medium/test_1685_sum_of_absolute_differences_in_a_sorted_array.rb) |
715715
| 1706. Where Will the Ball Fall | [Link](https://leetcode.com/problems/where-will-the-ball-fall/) | [Link](./lib/medium/1706_where_will_the_ball_fall.rb) | [Link](./test/medium/test_1706_where_will_the_ball_fall.rb) |
716+
| 1721. Swapping Nodes in a Linked List | [Link](https://leetcode.com/problems/swapping-nodes-in-a-linked-list/) | [Link](./lib/medium/1721_swapping_nodes_in_a_linked_list.rb) | [Link](./test/medium/test_1721_swapping_nodes_in_a_linked_list.rb) |
716717
| 2116. Check if a Parentheses String Can Be Valid | [Link](https://leetcode.com/problems/check-if-a-parentheses-string-can-be-valid/) | [Link](./lib/medium/2116_check_if_a_parentheses_string_can_be_valid.rb) | [Link](./test/medium/test_2116_check_if_a_parentheses_string_can_be_valid.rb) |
717718
| 2425. Bitwise XOR of All Pairings | [Link](https://leetcode.com/problems/bitwise-xor-of-all-pairings/) | [Link](./lib/medium/2425_bitwise_xor_of_all_pairings.rb) | [Link](./test/medium/test_2425_bitwise_xor_of_all_pairings.rb) |
718719
| 2429. Minimize XOR | [Link](https://leetcode.com/problems/minimize-xor/) | [Link](./lib/medium/2429_minimize_xor.rb) | [Link](./test/medium/test_2429_minimize_xor.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 = '8.7.9'
8+
s.version = '8.8.0'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'

lib/common/linked_list.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def initialize(val = 0, nxt = nil)
1111
@next = nxt
1212
end
1313

14-
# @param {Array} values
14+
# @param {ListNode} values
1515
def self.from_array(values)
1616
return if values.empty?
1717

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# frozen_string_literal: true
2+
3+
# https://leetcode.com/problems/swapping-nodes-in-a-linked-list/
4+
# @param {ListNode} head
5+
# @param {Integer} k
6+
# @return {ListNode}
7+
def swap_nodes(head, k)
8+
nodes = []
9+
pointer = head
10+
11+
while pointer
12+
nodes << pointer
13+
14+
pointer = pointer.next
15+
end
16+
17+
first = nodes[k - 1]
18+
second = nodes[nodes.size - k]
19+
temp = first.val
20+
first.val = second.val
21+
second.val = temp
22+
23+
head
24+
end
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/common/linked_list'
5+
require_relative '../../lib/medium/1721_swapping_nodes_in_a_linked_list'
6+
require 'minitest/autorun'
7+
8+
class SwappingNodesInALindedListTest < ::Minitest::Test
9+
def test_default_one
10+
assert(
11+
::ListNode.are_equals(
12+
::ListNode.from_array(
13+
[1, 4, 3, 2, 5]
14+
),
15+
swap_nodes(
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+
[7, 9, 6, 6, 8, 7, 3, 0, 9, 5]
30+
),
31+
swap_nodes(
32+
::ListNode.from_array(
33+
[7, 9, 6, 6, 7, 8, 3, 0, 9, 5]
34+
),
35+
5
36+
)
37+
)
38+
)
39+
end
40+
end

0 commit comments

Comments
 (0)