力扣题-9.30
力扣题1:414. 第三大的数
解题思想:遍历数组,记录下第一大、第二大和第三大的数字即可。
class Solution(object):
def thirdMax(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
a, b, c = None, None, None
for i in range(len(nums)):
if a is None or nums[i]>a:
a,b,c = nums[i],a,b
elif a>nums[i] and (b is None or nums[i]>b):
a,b,c = a,nums[i],b
elif b>nums[i] and (c is None or nums[i] > c):
a,b,c = a,b,nums[i]
print(a,b,c)
if c is None:
return a
else:
return c
class Solution {
public:
int thirdMax(vector<int>& nums) {
long long a = LLONG_MIN, b = LLONG_MIN, c = LLONG_MIN;
for (int i = 0; i < nums.size(); i++) {
if(nums[i]>a){
c = b;
b = a;
a = nums[i];
}
else if(nums[i]>b && nums[i] < a){
c = b;
b = nums[i];
}
else if(nums[i]>c && nums[i] < b) {
c = nums[i];
}
}
if (c == LLONG_MIN) {
return a;
}
else {
return c;
}
}
};
力扣题2:628. 三个数的最大乘积
解题思想:
1.全是正数,则最大的三个数乘积最大
2.全是负数,则最大的三个数乘积最大
3.有正有负时,考虑是最大的三个数的乘积最大还是两个负数+一个正数的乘积最大,两个正数+一个负数乘积最大的情况只在只有三个数的条件下出现(相当于与最大的三个数的乘积)
class Solution(object):
def maximumProduct(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums = sorted(nums)
n = len(nums)
return max(nums[0] * nums[1] * nums[n - 1], nums[n - 3] * nums[n - 2] * nums[n - 1])
class Solution {
public:
int maximumProduct(vector<int>& nums) {
sort(nums.begin(), nums.end());
int n = nums.size();
return max(nums[0] * nums[1] * nums[n - 1], nums[n - 3] * nums[n - 2] * nums[n - 1]);
}
};