专栏名称: Python爱好者社区
人生苦短,我用Python。分享Python相关的技术文章、工具资源、精选课程、视频教程、热点资讯、学习资料等。每天自动更新和推送。
目录
相关文章推荐
Python爱好者社区  ·  算法入门手册 ·  昨天  
Python爱好者社区  ·  不是华为目标院校,直接被华为判死刑。。。 ·  昨天  
Python爱好者社区  ·  中国四大软件外包公司 ·  3 天前  
Python开发者  ·  字节回应大模型训练被实习生攻击 ·  5 天前  
Python爱好者社区  ·  中国最“孤独”的985高校!校长曾正面回应人 ... ·  6 天前  
51好读  ›  专栏  ›  Python爱好者社区

不是华为目标院校,直接被华为判死刑。。。

Python爱好者社区  · 公众号  · Python  · 2024-10-26 15:00

正文

一网友投了华为的软件工程师,投了之后就没有反应了,联系HR也不回复,后来通过打听得知该网友所在学校不是华为的目标院校。原来大厂招聘都有目标院校,如果不是目标院校是不是简历都过不了?





--------------下面是今天的算法题--------------


来看下今天的算法题,这题是LeetCode的第238题:除自身以外数组的乘积。


问题描述



来源:LeetCode第238题
难度:中等

给你一个整数数组 nums,返回数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。题目数据保证数组 nums 之中任意元素的全部前缀元素和后缀的乘积都在 32 位整数范围内。请不要使用除法,且在 O(n) 时间复杂度内完成此题。

示例1:

输入: nums = [1,2,3,4]

输出: [24,12,8,6]

示例2:

输入: nums = [-1,1,0,-3,3]

输出: [0,0,9,0,0]


  • 2 <= nums.length <= 10^5

  • -30 <= nums[i] <= 30

  • 保证数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位整数范围内


问题分析



这题让计算数组中每个位置的值是其他所有元素的乘积,但不能使用除法。我们可以先计算每个位置左边所有元素的乘积,然后再计算右边所有元素的乘积,那么当前位置的值就是左边所有元素的乘积与右边所有元素乘积的积,如下图所示。


JAVA:
public int[] productExceptSelf(int[] nums) {
    int length = nums.length;
    int[] res = new int[length];
    res[0] = 1;
    // 先计算当前位置左边所有元素的乘积。
    for (int i = 1; i         res[i] = res[i - 1] * nums[i - 1];

    int right = 1;// 当前位置右边所有元素的乘积。
    // 左边和右边的乘积就是当前位置的值。
    for (int i = length - 1; i >= 0; i--) {
        res[i] *= right;
        right *= nums[i];
    }
    return res;
}

C++:
public:
    vector<intproductExceptSelf(vector<int>& nums) {
        int length = nums.size();
        vector<intres(length);
        res[0] = 1;
        // 先计算当前位置左边所有元素的乘积。
        for (int i = 1; i             res[i] = res[i - 1] * nums[i - 1];

        int right = 1;// 当前位置右边所有元素的乘积。
        // 左边和右边的乘积就是当前位置的值。
        for (int i = length - 1; i >= 0; i--) {
            res[i] *= right;
            right *= nums[i];
        }
        return res;
    }

Python:
def productExceptSelf(self, nums: List[int]) -> List[int]:
    length = len(nums)
    res = [0] * length
    res[0] = 1
    # 先计算当前位置左边所有元素的乘积。
    for i in range(1, length):
        res[i] = res[i - 1] * nums[i - 1]

    right = 1  # 当前位置右边所有元素的乘积。
    # 左边和右边的乘积就是当前位置的值。
    for i in range(length - 1-1-1):
        res[i] *= right
        right *= nums[i]
    return res


最后,给大家分享点资料(可免费下载):195篇多模态各领域论文


资源获取:

关注下方公众号,后台回复:多模态



195篇多模态各领域论文

点击👆👆👆卡片,关注后回复【多模态】,即可获取


推荐文章
Python爱好者社区  ·  算法入门手册
昨天
Python爱好者社区  ·  中国四大软件外包公司
3 天前
Python开发者  ·  字节回应大模型训练被实习生攻击
5 天前
教你看穿男人的心  ·  男人的第一次到底有多疼?
7 年前
每天学点做饭技巧  ·  懒人必备的盖浇饭集锦,完美解决一周晚餐!
7 年前