您的位置:首页 > 健康 > 美食 > 网站的策划方案_视频软件app_上海seo网站推广_产品宣传推广方案

网站的策划方案_视频软件app_上海seo网站推广_产品宣传推广方案

2025/1/4 14:22:28 来源:https://blog.csdn.net/weixin_42383726/article/details/143994143  浏览:    关键词:网站的策划方案_视频软件app_上海seo网站推广_产品宣传推广方案
网站的策划方案_视频软件app_上海seo网站推广_产品宣传推广方案

🔗 https://leetcode.cn/problems/product-of-array-except-self

题目

  • 给定一个数组,返回除了当前元素,其余所有元素的乘积
  • 不能用除法,所有数字的乘积都在 int 32 位之内

思路

  • solution 1
    • presum 的思路变成 prefix_product 和 suffix_product 的计算,当前元素的答案,就是对应的 prefix_product 和 suffix_product 的乘积
  • solution 2
    • 进阶要求仅用额外的 O(1) 空间,那遍顺序遍历一遍,逆序遍历一遍,记录对应的乘积,更新当前元素的答案

代码

class Solution {
public:vector<int> solution1(vector<int>& nums) {int n = nums.size();vector<int> suffix_product(n+1), prefix_product(n+1);suffix_product[n] = prefix_product[0] = 1; for (int i = 0; i < nums.size(); i++) {prefix_product[i + 1] = prefix_product[i] * nums[i];suffix_product[n - i -1] = suffix_product[n - i] * nums[n - i -1];}vector<int> ans(n);for (int i = 0; i < n; i++) {ans[i] = prefix_product[i] * suffix_product[i+1];}return ans; }vector<int> solution2(vector<int>& nums) {int n = nums.size();vector<int> ans(n, 1);int pre_prod = 1;for (int i = 0; i < n; i++) {ans[i] = pre_prod;pre_prod *= nums[i];}int suf_prod = 1;for (int i = n - 1; i >= 0; i--) {ans[i] *= suf_prod;suf_prod *= nums[i];}return ans;}vector<int> productExceptSelf(vector<int>& nums) {//return solution1(nums);return solution2(nums);}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com