ruby - 'if' 语句在'for' 循环中不起作用
问题描述
我需要找出一个整数数组是否包含一个或多个元素,这些元素将数组分成两部分,使得左右部分的元素之和相等。
我试过这个:
arr = [1,2,3,4,3,2,1]
left_sum = 0
right_sum = arr.inject(0) { |sum, x| sum = sum + x }
for i in 0..arr.length-1
counter = []
right_sum = right_sum - arr[i]
case i
when 0
left_sum = 0
else
left_sum = left_sum + arr[i-1]
end
puts "Left sum of element #" + i.to_s + "=" + left_sum.to_s
puts "Right sum of element #" + i.to_s + "=" + right_sum.to_s
puts " "
if right_sum - arr[i] == left_sum + arr[i-1]
puts "Left sum" + "=" + "Right sum"
counter.push(i)
end
puts counter.to_s
end
我遇到了一个错误。我不明白为什么- 语句在-loopif
中不起作用。for
我做错了什么?
解决方案
在 ruby 中使用不是一个好主意for
,您可以each
在 Ruby 中使用 for 循环。
arr.each { |i|
...
}
此外,您需要在询问是否相等之前已经计算出总和。
right_aux = right_sum - arr[i]
left_aux = left_sum + arr[i-1]
if right_aux == left_aux
puts "Left sum" + "=" + "Right sum"
counter.push(i)
end
推荐阅读
- html - 有没有其他方法来定位绝对元素?
- python - ValueError:字符串格式说明符中不允许“=”对齐
- javascript - 如何在通过 JavaScript 克隆 html 元素后清除输入字段并选择字段?
- excel - VBA 代码覆盖保护设置 - 任何想法
- react-native - 命令失败:在 React-Native 中安装导航、firebase、图标等依赖项时出现 gradlew.bat installDebug 错误
- android - 将 Android Studio 配置为在文件打开时将一种格式应用于代码,在文件保存时将另一种格式应用于代码
- python - 如何平衡(过采样)PyTorch 中的不平衡数据(使用 WeightedRandomSampler)?
- php - 为什么将隐藏的输入标签放在 HTML5 DOCTYPE 声明之上
- gradle - 使用 Gradle 时如何阻止 IntelliJ IDEA 忘记忽略的目录?
- php - Laravel 雄辩的 ORM 关系