每日一題 陣列中兩元素的最大乘積

2021-10-20 22:35:13 字數 1404 閱讀 3696

給你乙個整數陣列 nums,請你選擇陣列的兩個不同下標 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。

請你計算並返回該式的最大值。

示例 1:

輸入:nums = [3,4,5,2]

輸出:12

解釋:如果選擇下標 i=1 和 j=2(下標從 0開始),則可以獲得最大值,(nums[1]-1)(nums[2]-1) = (4-1)(5-1) = 3*4 = 12 。

示例 2:

輸入:nums = [1,5,4,5]

輸出:16

解釋:選擇下標 i=1 和 j=3(下標從 0 開始),則可以獲得最大值(5-1)*(5-1) = 16 。

示例 3:

輸入:nums = [3,7]

輸出:12

class

solution

:def

maxproduct

(self, nums)

:for i in

range

(len

(nums)):

nums[i]

= nums[i]-1

res =

0 left =

0 right =

1while left <

len(nums)-1

:if right ==

len(nums)

: left +=

1if left ==

len(nums)-1

:return res

else

: right = left +

1if nums[left]

* nums[right]

> res:

res = nums[left]

* nums[right]

right +=

1else

: right +=

1return res

就記得雙指標了,傻掉了,其實直接排序,最大的兩個數的乘積一定是最大的。

class

solution

:def

maxproduct

(self, nums)

: nums.sort(

)print

(nums)

return

(nums[-1

]-1)

*(nums[-2

]-1)

陣列中兩元素的最大乘積

給你乙個整數陣列 nums,請你選擇陣列的兩個不同下標 i 和 j,使 nums i 1 nums j 1 取得最大值。請你計算並返回該式的最大值。示例 1 輸入 nums 3,4,5,2 輸出 12 解釋 如果選擇下標 i 1 和 j 2 下標從 0 開始 則可以獲得最大值,nums 1 1 nu...

1464 陣列中兩元素的最大乘積

題目 給你乙個整數陣列 nums,請你選擇陣列的兩個不同下標 i 和 j,使 nums i 1 nums j 1 取得最大值。請你計算並返回該式的最大值。示例 1 輸入 nums 3,4,5,2 輸出 12 解釋 如果選擇下標 i 1 和 j 2 下標從 0 開始 則可以獲得最大值,nums 1 1...

leetcode陣列中兩元素的最大乘積 1464

給你乙個整數陣列 nums,請你選擇陣列的兩個不同下標 i 和 j,使 nums i 1 nums j 1 取得最大值。請你計算並返回該式的最大值。輸入 nums 3,4,5,2 輸出 12 解釋 如果選擇下標 i 1 和 j 2 下標從 0 開始 則可以獲得最大值,nums 1 1 nums 2 ...