当前位置: 首页 > wzjs >正文

网站导航包括郑州短视频培训机构

网站导航包括,郑州短视频培训机构,做ppt的模板的网站,安徽望江县城乡建设局官方网站1、题干 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) …

1、题干

给你一个整数数组 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 <= 105
-30 <= nums[i] <= 30
输入 保证 数组 answer[i] 在 32 位 整数范围内

进阶:
你可以在 O(1) 的额外空间复杂度内完成这个题目吗?( 出于对空间复杂度分析的目的,输出数组 不被视为 额外空间。)

2、解题

方法一:暴力求解法

定义额外的数组依次遍历进行赋值,遇到相同下标时跳过。

public static int[] productExceptSelf(int[] nums) {int[] result = new int[nums.length];int temp;for (int i = 0; i < nums.length; i++) {temp = 1;for (int j = 0; j < nums.length; j++) {if (j == i) {continue;}temp = temp * nums[j];if (temp == 0) {break;}}result[i] = temp;}return result;}

方法二:总乘积求除法

先求出所有元素的乘积,之后除以当前元素值就是其余元素的乘积值。

注意:值为0的元素造成干扰,所以需要预先判断元素为0的数量和非0元素的乘积。
大于1时,结果必定都是0。
等于1时,元素值为0时,为非0元素的乘积;不为0时,都是0。
小于0时,即没有0值的元素,直接用总乘积除以当前元素获取。

public static int[] productExceptSelf(int[] nums) {int[] result = new int[nums.length];List<Integer> zeroList = new ArrayList<>();int all = 1;for (int i = 0; i < nums.length; i++) {if (nums[i] == 0) {zeroList.add(i);} else {all *= nums[i];}}if (zeroList.size() > 1) {return result;} else if (zeroList.size() == 1) {for (int i = 0; i < nums.length; i++) {if (nums[i] == 0) {result[i] = all;} else {result[i] = 0;}}} else {for (int i = 0; i < nums.length; i++) {result[i] = all / nums[i];}}return result;}

方法三:左右乘积法

定义两个额外的数组,左数组和右数组。
左数组保存从左遍历,从头开始到前一个元素的结果。右数组则保存从右遍历,元素的乘积。
具体解释:
左数组:

  • 计算第0个元素,左边没有元素,默认1;
  • 计算第1个元素,左边只有1个元素,为原始数组第0个元素的值;
  • 计算第2个元素,左边包含第0和第1个两个元素,为这两个元素的乘积,之后以此类推

右数组和左数组同理,方向相反。

   public static int[] productExceptSelf(int[] nums) {int[] result = new int[nums.length];int[] left = new int[nums.length];      // 从左遍历,存储每个元素左边元素的乘积int[] right = new int[nums.length];       // 从右遍历,存储每个元素右边元素的乘积// 因为第0个元素左边没有元素,默认1。第1个元素,则为第0个元素的值,第2个元素为第0和第1个元素的乘积,以此类推left[0] = 1;for (int i = 1; i < nums.length; i++) {left[i] = left[i - 1] * nums[i - 1];}// 右数组right[nums.length - 1] = 1;for (int i = nums.length - 2; i >= 0; i--) {right[i] = right[i + 1] * nums[i + 1];}// 结果数组for (int i = 0; i < nums.length; i++) {result[i] = left[i] * right[i];}return result;}

方法四:左右乘积法优化

方法三的优化,左数组同理生成,右数组在遍历生成的同时就可以计算结果元素,并保存到结果中。

 public static int[] productExceptSelf(int[] nums) {int[] left = new int[nums.length];      // 从左遍历,存储每个元素左边元素的乘积// 因为第0个元素左边没有元素,默认1。第1个元素,则为第0个元素的值,第2个元素为第0和第1个元素的乘积,以此类推left[0] = 1;for (int i = 1; i < nums.length; i++) {left[i] = left[i - 1] * nums[i - 1];}int right = 1;for (int i = nums.length - 1; i >= 0; i--) {left[i] = left[i] * right;right = right * nums[i];}return left;}

逆风翻盘,Dare To Be!!!


文章转载自:

http://X0Kp8Spk.tbbxn.cn
http://b94K5S4s.tbbxn.cn
http://siNp4dEG.tbbxn.cn
http://xJ6RBGqF.tbbxn.cn
http://jCpI1Xm8.tbbxn.cn
http://Umbm49rm.tbbxn.cn
http://TXKANDXZ.tbbxn.cn
http://xxIy9MPk.tbbxn.cn
http://HfeW8pRR.tbbxn.cn
http://x6oYc1mH.tbbxn.cn
http://KDGcX8yI.tbbxn.cn
http://ZO6sfZ0Q.tbbxn.cn
http://RswjWKny.tbbxn.cn
http://nwvirC1u.tbbxn.cn
http://Y6qZgXfO.tbbxn.cn
http://YZvNV44O.tbbxn.cn
http://YdMW8kSP.tbbxn.cn
http://3VlTo5Dd.tbbxn.cn
http://B1kDCkPx.tbbxn.cn
http://yYnPCwEd.tbbxn.cn
http://3AjlRK5S.tbbxn.cn
http://qjqlVX4P.tbbxn.cn
http://Ro46uJrn.tbbxn.cn
http://Lk0dIm5g.tbbxn.cn
http://C41VUk8h.tbbxn.cn
http://nbHp2SJo.tbbxn.cn
http://SwMoEJ0l.tbbxn.cn
http://n8gFfWeu.tbbxn.cn
http://7SsacBwe.tbbxn.cn
http://FawVA9U6.tbbxn.cn
http://www.dtcms.com/wzjs/725442.html

相关文章:

  • 首选大型网站建站公司开什么工作室最稳定
  • wordpress站内短信网站建设多少钱信息
  • 网站管理是做什么的陕西省交通建设集团西长分公司网站
  • 案例应聘网络营销做网站推广建筑网校排名前十大品牌
  • 国内简约网站设计欣赏企业年金辞职了就白交了吗
  • 我想网上开店怎么开淄博网站排名seo
  • 网站建设的维护工作有哪些图跃网站建设
  • 宁夏住房建设厅网站企业宣传片脚本
  • 免备案域名购买网站厦门网站制作阳哥
  • 网站 粘度北京市建设规划网站
  • 修改网站空间服务器密码云阿里云做网站
  • 企业门户网站开发公司黄骅港务集团有限公司
  • 网站建设与推广长春自己怎么做淘宝网站
  • 网站设计报价是多少钱看房地产的app在哪看
  • 惠州建设局网站做外贸需要关注的网站有什么问题
  • 建设局发公告的网站免费软件漫画
  • 吉林省建设集团有限公司网站网站开发工具比较
  • 商务网站开发与建设论文百度小说官网
  • 用html5做的简单的网站建设网站培训班
  • 大型网站制作软件什么做的网站
  • 天津公司网站如何制作字体设计软件 免费
  • 文明网站机制建设深圳市建设混凝土投标网站
  • 铁岭网站开发公司企业网站建设原则有哪些
  • seo精华网站怎样做seo网站链接
  • 搬瓦工如何搭建做网站兰州网站建设与优化
  • 昆明企业做网站太原师范学院教务网络管理系统
  • 苏州做网站的wordpress 仿微信主题
  • 新手建网站什么类型好wordpress上下篇
  • 东莞公司网站建设教程鞍山在百度做个网站多少钱
  • 学习网站后台维护vs2012怎么做网站