我想将数组中的每个项目相互乘以,然后找到最大值。
我尝试了很多东西,直到我使用from PyQt5 import QtWidgets, QtGui, QtCore
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent=parent)
self.center = None
def mousePressEvent(self, event):
if event.button() == QtCore.Qt.LeftButton:
event = QtGui.QMouseEvent(QtCore.QEvent.MouseButtonPress, event.pos(), QtCore.Qt.LeftButton, QtCore.Qt.LeftButton, QtCore.Qt.NoModifier)
self.center = event.pos()
self.update()
QtWidgets.QMainWindow.mousePressEvent(self, event)
def paintEvent(self, event):
if self.center:
painter = QtGui.QPainter(self)
painter.setPen(QtCore.Qt.red)
painter.drawEllipse(self.center, 110, 110)
QtWidgets.QMainWindow.paintEvent(self, event)
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
方法,然后得到了这个并且现在卡住了:
cycle
这不起作用,因为Ruby显然没有(陈述的)能够知道def adjacentElementsProduct(inputArray)
outArray = inputArray.cycle(inputArray.length){|num| num[0] * num[1]}.to_a
return outArray.max
end
或num[0]
是什么。
例如:
num[1]
因为adjacentElementsProduct([3, 6, -2, -5, 7, 3]) => 21
是所有数字相乘时的最大产品。
答案 0 :(得分:4)
您可以找到两个最大的值。没有必要尝试每种组合:
[3, 6, -2, -5, 7, 3].max(2).inject(:*)
#=> 42
如果您仍想使用组合,请使用combination
方法:
[3, 6, -2, -5, 7, 3].combination(2)
.map { |f, s| f * s }
.max
#=> 42
如果您想要找到最大的逐个值,请使用each_cons
:
[3, 6, -2, -5, 7, 3].each_cons(2)
.map {|f, s| f * s }
.max
#=> 21
另外,
max_by {|f, s| f * s }.inject(:*)
可以替代使用,但它取决于你。