Sort the array, the maximum product happens in two situations:

the last three or the first two with the last one.

Here is the Python code!

```
class Solution(object):
def maximumProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums.sort()
return max(nums[-1]*nums[-2]*nums[-3], nums[0]*nums[1]*nums[-1])
```