一天两道力扣(7)
class Solution(object):def majorityElement(self, nums):votes = 0for num in nums:if votes == 0: res = numif num == res:votes += 1 else:votes -= 1return res
思路:不管前面抵消的都是非众数还是说其中有一半众数,最后剩的一定还是众数
class Solution(object):def productExceptSelf(self, nums):ans, tmp = [1] * len(nums), 1for 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] *= tmpreturn ans
思路:第一个循环使用数组ans[]来存储每个元素左侧元素乘积(从最左侧开始,每次往右乘一个数)。第二个循环不使用数组存储值,直接使用一个变量temp计算右侧元素乘积(从最右侧元素开始,每次往左乘一个数)。然后直接用ans[]*temp来计算最终结果,每一轮计算出temp就计算使用掉然后下一轮更新。最终就只用到两个单层循环和一个数组。