Skip to content

Commit 461810f

Browse files
authored
Merge pull request #774 from fartem/435_Non-overlapping_Intervals
2024-11-15 v. 7.0.4: added "435. Non-overlapping Intervals"
2 parents f0d940e + a1e2a72 commit 461810f

File tree

4 files changed

+68
-1
lines changed

4 files changed

+68
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -569,3 +569,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
569569
| 417. Pacific Atlantic Water Flow | [Link](https://leetcode.com/problems/pacific-atlantic-water-flow/) | [Link](./lib/medium/417_pacific_atlantic_water_flow.rb) | [Link](./test/medium/test_417_pacific_atlantic_water_flow.rb) |
570570
| 424. Longest Repeating Character Replacement | [Link](https://leetcode.com/problems/longest-repeating-character-replacement/) | [Link](./lib/medium/424_longest_repeating_character_replacement.rb) | [Link](./test/medium/test_424_longest_repeating_character_replacement.rb) |
571571
| 429. N-ary Tree Level Order Traversal | [Link](https://leetcode.com/problems/n-ary-tree-level-order-traversal/) | [Link](./lib/medium/429_n_ary_tree_level_order_traversal.rb) | [Link](./test/medium/test_429_n_ary_tree_level_order_traversal.rb) |
572+
| 435. Non-overlapping Intervals | [Link](https://leetcode.com/problems/non-overlapping-intervals/) | [Link](./lib/medium/435_non_overlapping_intervals.rb) | [Link](./test/medium/test_435_non_overlapping_intervals.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 = '7.0.3'
8+
s.version = '7.0.4'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# frozen_string_literal: true
2+
3+
# https://leetcode.com/problems/non-overlapping-intervals/
4+
# @param {Integer[][]} intervals
5+
# @return {Integer}
6+
def erase_overlap_intervals(intervals)
7+
intervals.sort_by!(&:first)
8+
max = intervals.first.last
9+
result = 0
10+
intervals.each do |inter|
11+
if inter.first < max
12+
result += 1
13+
max = [max, inter.last].min
14+
else
15+
max = inter.last
16+
end
17+
end
18+
19+
result - 1
20+
end
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/medium/435_non_overlapping_intervals'
5+
require 'minitest/autorun'
6+
7+
class NonOverlappingIntervalsTest < ::Minitest::Test
8+
def test_default_one
9+
assert_equal(
10+
1,
11+
erase_overlap_intervals(
12+
[
13+
[1, 2],
14+
[2, 3],
15+
[3, 4],
16+
[1, 3]
17+
]
18+
)
19+
)
20+
end
21+
22+
def test_default_two
23+
assert_equal(
24+
2,
25+
erase_overlap_intervals(
26+
[
27+
[1, 2],
28+
[1, 2],
29+
[1, 2]
30+
]
31+
)
32+
)
33+
end
34+
35+
def test_default_three
36+
assert_equal(
37+
0,
38+
erase_overlap_intervals(
39+
[
40+
[1, 2],
41+
[2, 3]
42+
]
43+
)
44+
)
45+
end
46+
end

0 commit comments

Comments
 (0)