mycode   99.47%

class Solution(object): 
    def productExceptSelf(self, nums):
        """
        :type nums: List[int]
        :rtype: List[int]
        """
        temp = 1
        res = list()
        res.append(1)
        #nums的第一个数和最后一个数是最特殊的,因为别人都是左右可以包围的,即product=该数前面所有数的乘积*该数后面所有数的乘积
        #所以res[0]放1,代表nums[0]前面的数(其实没有)的product
        for i in range(len(nums)-1):
        #当i为len(nums)-2时,计算出来的乘积就是nums最后一个元素的product结果
            temp *= nums[i]
            res.append(temp) #res[1]放的时nums[1]前面的数的product
        #i==len(nums)-2时,res[len(nums)-2]放的就是nums[-1]前面的数的product,而nums[-1]后面是没有数的,所有逆向遍历的时候只需要从nums[len(nums)-2]开始计算它后面的乘积
        temp = 1
        for i in range(len(nums)-2,-1,-1):
            temp *= nums[i+1]
            res[i] = res[i]*temp
        return res