Leetcode 238. 除自身以外数组的乘积

2 种写法。 python 和 C语言

1. python

class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
        # nums = [1, 2, 3]
        # L =    [1, ]
        n = len(nums) 

        # L, R ,分别代码左右的 乘积列表
        L, R, ret = [0] * n, [0] * n, [0] * n

        L[0] = 1
        for i in range(1, n):

            # 这里的 nums[i-1],i - 1 的目的是为了取到 nums 的第一个值。
            # 因为 i 是从1 开始的。
            L[i] = nums[i - 1] * L[i-1]  # ???


        # 处理右侧。需要反转一下。
        R[n - 1] = 1
        for i in reversed(range(n-1)):
            R[i] = nums[i+1] * R[i+1]


        # 处理索引 i
        for i in range(n):
            ret[i] = L[i] * R[i] 

        return ret

2. C语言

/**
 参考代码:
 https://leetcode.cn/problems/product-of-array-except-self/solutions/2254723/238-chu-zi-shen-yi-wai-shu-zu-de-cheng-j-xfqm/?envType=study-plan-v2&envId=selected-coding-interview
 */


int ret[100000];
int* productExceptSelf(int* nums, int numsSize, int* returnSize) {

    // int ret[100000] = {1};  // 这个写法不行。只有第一个值是1, 其他的都是0
    
    for (int i =0; i < numsSize; i++) {
        ret[i] = 1;
    }

    int pre = 1,  suf = 1;
    for (int i=1; i < numsSize; i++) {
        pre *= nums[i-1];          // 从前面取值。
        suf *= nums[numsSize -i];  // 相当于是, 从数组的末尾开始取值。

        ret[i] *= pre;

        // 这里比较难理解。
        ret[numsSize -i - 1] *= suf; 
    }

    *returnSize = numsSize;
    return ret;
}

参考链接中的这个写法,下面有很多评论,别人也有很多疑问:
在这里插入图片描述
C语言,细节上的问题太多了。
下面记录一些知识点:

  1. 初始化数组:

    int ret[100000] = {1}; // 这个写法不行。只有第一个值是1, 其他的都是0.

  2. 把一个指针数组传入函数, 还需要传入数组的大小,这个也太麻烦了。

相关推荐

  1. Leetcode238.自身以外乘积

    2024-07-20 07:20:05       63 阅读
  2. Leetcode 238. 自身以外乘积

    2024-07-20 07:20:05       20 阅读
  3. 【力扣】238. 自身以外乘积

    2024-07-20 07:20:05       34 阅读
  4. 238. 自身以外乘积

    2024-07-20 07:20:05       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 07:20:05       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 07:20:05       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 07:20:05       45 阅读
  4. Python语言-面向对象

    2024-07-20 07:20:05       55 阅读

热门阅读

  1. RK3328 Debian安装OpenMediaVault

    2024-07-20 07:20:05       16 阅读
  2. list容器

    2024-07-20 07:20:05       14 阅读
  3. http 协议中GET如何传递参数(Query String)?

    2024-07-20 07:20:05       12 阅读
  4. 浏览器的缓存

    2024-07-20 07:20:05       17 阅读
  5. 记录贴-idea导入别人的项目

    2024-07-20 07:20:05       14 阅读
  6. 【SpringBoot】分页查询

    2024-07-20 07:20:05       16 阅读
  7. 第九十六周周报

    2024-07-20 07:20:05       14 阅读
  8. Webserver笔记

    2024-07-20 07:20:05       16 阅读
  9. mybatis-sql实战总结

    2024-07-20 07:20:05       17 阅读
  10. Python--正则表达式re模块基础匹配方法

    2024-07-20 07:20:05       16 阅读
  11. 2024-07-19 Unity插件 Odin Serializer1 —— 插件介绍

    2024-07-20 07:20:05       17 阅读
  12. 【多商户自营解决方案】

    2024-07-20 07:20:05       16 阅读