這是用python刷的第一道算法題堆缘。
原題:
Given an integer array, find three numbers whose product is maximum and output the maximum product.
Example 1:
Input: [1,2,3]
Output: 6
Example 2:
Input: [1,2,3,4]
Output: 24
Note:
The length of the given array will be in range [3,104] and all elements are in the range [-1000, 1000].
Multiplication of any three numbers in the input won't exceed the range of 32-bit signed integer.
思路:
最大乘積只有兩種可能:1.最小的兩個(gè)負(fù)數(shù) 和最大的整數(shù)的乘積;2.最大的三個(gè)數(shù)的乘積;
所以將原來(lái)的數(shù)組排序暖侨。
我自己得到accept的解決方案:
class Solution(object):
def maxer(self,a,b):
""""
:type a: int
:type b: int
:rtype :int
"""
if a > b :
return a
else:
return b
def maximumProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums.sort()
sortNums = nums[:]
maxProd = self.maxer(sortNums[-1]*sortNums[-2]*sortNums[-3],sortNums[-1]*sortNums[0]*sortNums[1])
return maxProd
通過這道題垃僚,學(xué)到這樣幾個(gè)知識(shí)點(diǎn):
1.sort后賦值,為NoneType
x=[1,4,2,0]
# 錯(cuò)誤的方式媒吗,因?yàn)閟ort沒有返回值
y=x.sort()
type (y) #NoneType
#正確的方式
x.sort()
y=x[:]
2. 一個(gè)class中同級(jí)函數(shù)之間的調(diào)用
先看程序:
class Animal:
def find_food():
print('find food')
def eat_food():
print("eat food")
def find_girl():
find_food()
eat_food()
find_food()
pig = Animal()
pig.find_food()
程序錯(cuò)誤辈毯, 因?yàn)闆]有Self(其實(shí)你換成se,也能執(zhí)行)。 我們知道必須有一個(gè)申明搜贤,但是為什么呢谆沃?? 不如從這個(gè)出發(fā)看問題 仪芒。
def find_girl():
find_food()
eat_food()
find_food()
這個(gè)函數(shù)唁影, 調(diào)用同級(jí)函數(shù), 是不行的掂名,因?yàn)榫植康脑蚰兀?那就必須調(diào)用本身.函數(shù)來(lái)執(zhí)行据沈。所以必須有個(gè)本身,那就是self了
于是程序就變成了
def find_girl():
self.find_food()
self.eat_food()
self.find_food()
那這個(gè)必須有申明吧饺蔑,那就加上
def find_girl(self):
self.find_food()
self.eat_food()
self.find_food()
當(dāng)然也可以
def find_girl(se):
se.find_food()
se.eat_food()
se.find_food()
se就是本身的意思锌介,為了便于程序的,就得在類這個(gè)調(diào)用多個(gè)函數(shù)中猾警,先申明自己是誰(shuí)孔祸,到底是self,還是se. 所以必須有參數(shù)