arrays - Ruby - 黑客等级问题
问题描述
**
好的,伙计们,我对 Hacker Rank 中的任务有疑问。我无法通过所有测试。
**
任务:
给定五个正整数,找出可以通过将五个整数中的四个恰好相加来计算的最小值和最大值。然后将各自的最小值和最大值打印为单行的两个空格分隔的长整数。
功能说明
在下面的编辑器中完成 miniMaxSum 函数。
miniMaxSum 具有以下参数:
arr:5 个整数的数组
打印
在一行上打印两个以空格分隔的整数:5 个元素中 4 个的最小和和最大和。
输入格式
一行五个空格分隔的整数。
**这是任务和我的代码:**
require 'json'
require 'stringio'
#
# Complete the 'miniMaxSum' function below.
#
# The function accepts INTEGER_ARRAY arr as parameter.
#
def miniMaxSum(arr)
if arr[0] != arr[1]
$prev = 0
$prev2 = Float::INFINITY
i = 0
5.times do
$res = arr.reject { |n| n == arr[i] }.sum
$prev = $res if $res > $prev
i = i + 1
end
i = 0
5.times do
$res2 = arr.reject { |n| n == arr[i] }.sum
$prev2 = $res2 if $res < $prev2
i = i + 1
end
print "#{$prev2} #{$prev}"
else
print "#{arr.sum} #{arr.sum}"
end
end
arr = gets.rstrip.split.map(&:to_i)
miniMaxSum arr
请帮忙。
解决方案
将数组中的 4 个最小元素和 4 个最大元素相加还不够吗?
您的问题在输入中有点不清楚,因此我提供两个答案。
当输入是5 个整数的数组时:
def min_max_sum(array)
sorted = array.sort
puts "#{sorted.first(4).sum} #{sorted.last(4).sum}"
end
min_max_sum [5, 4, 3, 2, 1]
#=> 10 14
当输入格式是单行的五个空格分隔的整数时:
def min_max_sum(string)
sorted = string.split(/ /).map(&:to_i).sort
puts "#{sorted.first(4).sum} #{sorted.last(4).sum}"
end
min_max_sum "5 4 3 2 1"
#=> 10 14
推荐阅读
- java - 我如何让 opensearch 服务器在 linux 上使用 ssl https
- ios - 我可以使用单个 Cocoapod 定位多个 Xcode/Swift 版本吗?
- c++ - 从类指针到 int 的无效转换
- mongodb - 在 spark + hdfs + mongo 环境中实现单元测试
- fpm - PHP-FPM 无法关闭
- log4j2 - How to set log4j2.json configuration.properties.property default value
- c++ - 如何读取 google::protobuf::io::CodedOutputStream::WriteVarint32ToArray 写入的数据
- scala - 如何从列表中创建火花数据框
- json - Clover ETL中提取json数据
- c# - 如何序列化已使用 XmlTextReader { Namespaces = false } 读取的 XML?