
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就计算使用掉然后下一轮更新。最终就只用到两个单层循环和一个数组。
转载自CSDN-专业IT技术社区
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_53677355/article/details/149814474



