From cc529dac27708f4497b106296bc037dc962ce9a9 Mon Sep 17 00:00:00 2001 From: fartem Date: Wed, 4 Dec 2024 10:09:16 +0300 Subject: [PATCH] 2024-12-04 v. 7.2.1: added "515. Find Largest Value in Each Tree Row" --- README.md | 1 + leetcode-ruby.gemspec | 2 +- ...515_find_largest_value_in_each_tree_row.rb | 27 ++++++++++++ ...515_find_largest_value_in_each_tree_row.rb | 42 +++++++++++++++++++ 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 lib/medium/515_find_largest_value_in_each_tree_row.rb create mode 100644 test/medium/test_515_find_largest_value_in_each_tree_row.rb diff --git a/README.md b/README.md index cc0caab0..c65772d0 100644 --- a/README.md +++ b/README.md @@ -586,3 +586,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/). | 503. Next Greater Element II | [Link](https://leetcode.com/problems/next-greater-element-ii/) | [Link](./lib/medium/503_next_greater_element_ii.rb) | [Link](./test/medium/test_503_next_greater_element_ii.rb) | | 508. Most Frequent Subtree Sum | [Link](https://leetcode.com/problems/most-frequent-subtree-sum/) | [Link](./lib/medium/508_most_frequent_subtree_sum.rb) | [Link](./test/medium/test_508_most_frequent_subtree_sum.rb) | | 513. Find Bottom Left Tree Value | [Link](https://leetcode.com/problems/find-bottom-left-tree-value/) | [Link](./lib/medium/513_find_bottom_left_tree_value.rb) | [Link](./test/medium/test_513_find_bottom_left_tree_value.rb) | +| 515. Find Largest Value in Each Tree Row | [Link](https://leetcode.com/problems/find-largest-value-in-each-tree-row/) | [Link](./lib/medium/515_find_largest_value_in_each_tree_row.rb) | [Link](./test/medium/test_515_find_largest_value_in_each_tree_row.rb) | diff --git a/leetcode-ruby.gemspec b/leetcode-ruby.gemspec index fd5fa8fc..cb00dca8 100644 --- a/leetcode-ruby.gemspec +++ b/leetcode-ruby.gemspec @@ -5,7 +5,7 @@ require 'English' ::Gem::Specification.new do |s| s.required_ruby_version = '>= 3.0' s.name = 'leetcode-ruby' - s.version = '7.2.0' + s.version = '7.2.1' s.license = 'MIT' s.files = ::Dir['lib/**/*.rb'] + %w[README.md] s.executable = 'leetcode-ruby' diff --git a/lib/medium/515_find_largest_value_in_each_tree_row.rb b/lib/medium/515_find_largest_value_in_each_tree_row.rb new file mode 100644 index 00000000..679e202a --- /dev/null +++ b/lib/medium/515_find_largest_value_in_each_tree_row.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +# https://leetcode.com/problems/find-largest-value-in-each-tree-row/ +# @param {TreeNode} root +# @return {Integer[]} +def largest_values(root) + return [] unless root + + result = [] + nodes = [root] + until nodes.empty? + size = nodes.size + max = -::Float::INFINITY + (0...size).each do |_| + node = nodes.delete_at(0) + + max = node.val if node.val > max + + nodes << node.left if node.left + nodes << node.right if node.right + end + + result << max + end + + result +end diff --git a/test/medium/test_515_find_largest_value_in_each_tree_row.rb b/test/medium/test_515_find_largest_value_in_each_tree_row.rb new file mode 100644 index 00000000..37b85b08 --- /dev/null +++ b/test/medium/test_515_find_largest_value_in_each_tree_row.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +require_relative '../test_helper' +require_relative '../../lib/common/binary_tree' +require_relative '../../lib/medium/515_find_largest_value_in_each_tree_row' +require 'minitest/autorun' + +class FindLargestValueInEachTreeRowTest < ::Minitest::Test + def test_default_one + assert_equal( + [1, 3, 9], + largest_values( + ::TreeNode.new( + 1, + ::TreeNode.new( + 3, + ::TreeNode.new(5), + ::TreeNode.new(3) + ), + ::TreeNode.new( + 2, + nil, + ::TreeNode.new(9) + ) + ) + ) + ) + end + + def test_default_two + assert_equal( + [1, 3], + largest_values( + ::TreeNode.new( + 1, + ::TreeNode.new(2), + ::TreeNode.new(3) + ) + ) + ) + end +end