> 技术文档 > 一天两道力扣(7)

一天两道力扣(7)

class Solution(object): def majorityElement(self, nums): votes = 0 for num in nums: if votes == 0: res = num if num == res: votes += 1 else: votes -= 1 return res

 思路:不管前面抵消的都是非众数还是说其中有一半众数,最后剩的一定还是众数

class Solution(object): def productExceptSelf(self, nums): ans, tmp = [1] * len(nums), 1 for i in range(1, len(nums)): ans[i] = ans[i - 1] * nums[i - 1] for i in range(len(nums) - 2, -1, -1): tmp *= nums[i + 1] ans[i] *= tmp return ans 

思路:第一个循环使用数组ans[]来存储每个元素左侧元素乘积(从最左侧开始,每次往右乘一个数)。第二个循环不使用数组存储值,直接使用一个变量temp计算右侧元素乘积(从最右侧元素开始,每次往左乘一个数)。然后直接用ans[]*temp来计算最终结果,每一轮计算出temp就计算使用掉然后下一轮更新。最终就只用到两个单层循环和一个数组。