成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

除自身以外數(shù)組的乘積:三種解法及Java代碼示例

開發(fā) 前端
在處理數(shù)組相關(guān)的問題時(shí),有時(shí)候需要計(jì)算除數(shù)組中某個(gè)元素以外的所有元素的乘積。這個(gè)問題可以通過多種方法解決。本文將首先給出題目的詳細(xì)描述,然后介紹三種解法,并提供相應(yīng)的Java代碼示例。最后,對(duì)每種解法進(jìn)行時(shí)間和空間復(fù)雜度的分析,幫助讀者評(píng)估解法的效率和性能。

在處理數(shù)組相關(guān)的問題時(shí),有時(shí)候需要計(jì)算除數(shù)組中某個(gè)元素以外的所有元素的乘積。這個(gè)問題可以通過多種方法解決。本文將首先給出題目的詳細(xì)描述,然后介紹三種解法,并提供相應(yīng)的Java代碼示例。最后,對(duì)每種解法進(jìn)行時(shí)間和空間復(fù)雜度的分析,幫助讀者評(píng)估解法的效率和性能。

題目描述

給定一個(gè)整數(shù)數(shù)組 nums,返回一個(gè)數(shù)組 output,其中 output[i] 等于除 nums[i] 之外的所有元素的乘積。

注意:請(qǐng)不要使用除法,且在 O(n) 時(shí)間復(fù)雜度內(nèi)完成此問題的解決。

示例:

輸入: [1, 2, 3, 4]

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

解釋: 除了自身以外的乘積為:[2x3x4, 1x3x4, 1x2x4, 1x2x3] = [24, 12, 8, 6]

1. 解法一:暴力法

暴力法是最簡(jiǎn)單直接的解法,即對(duì)于數(shù)組中的每個(gè)元素,都計(jì)算除自身以外的其他元素的乘積。具體步驟如下:

public int[] productExceptSelf(int[] nums) {
   int n = nums.length;
   int[] output = new int[n];
   
   for (int i = 0; i < n; i++) {
       int product = 1;
       for (int j = 0; j < n; j++) {
           if (i != j) {
               product *= nums[j];
          }
      }
       output[i] = product;
  }
   
   return output;
}

時(shí)間復(fù)雜度分析:

  • 外層循環(huán)遍歷數(shù)組,時(shí)間復(fù)雜度為 O(n)。
  • 內(nèi)層循環(huán)遍歷數(shù)組,時(shí)間復(fù)雜度為 O(n)。
  • 總體時(shí)間復(fù)雜度為 O(n^2)。

空間復(fù)雜度分析:

  • 使用了額外的數(shù)組 output 來存儲(chǔ)結(jié)果,空間復(fù)雜度為 O(n)。

2. 解法二:左右乘積列表

解法二利用兩個(gè)輔助數(shù)組,分別記錄每個(gè)元素左側(cè)和右側(cè)的乘積。具體步驟如下:

public int[] productExceptSelf(int[] nums) {
   int n = nums.length;
   int[] output = new int[n];
   
   int[] leftProducts = new int[n];
   int[] rightProducts = new int[n];
   
   leftProducts[0] = 1;
   for (int i = 1; i < n; i++) {
       leftProducts[i] = leftProducts[i - 1] * nums[i - 1];
  }
   
   rightProducts[n - 1] = 1;
   for (int i = n - 2; i >= 0; i--) {
       rightProducts[i] = rightProducts[i + 1] * nums[i + 1];
  }
   
   for (int i = 0; i < n; i++) {
       output[i] = leftProducts[i] * rightProducts[i];
  }
   
   return output;
}

時(shí)間復(fù)雜度分析:

  • 第一個(gè)循環(huán)遍歷數(shù)組,時(shí)間復(fù)雜度為 O(n)。
  • 第二個(gè)循環(huán)遍歷數(shù)組,時(shí)間復(fù)雜度為 O(n)。
  • 第三個(gè)循環(huán)遍歷數(shù)組,時(shí)間復(fù)雜度為 O(n)。
  • 總體時(shí)間復(fù)雜度為 O(n)。

空間復(fù)雜度分析:

  • 使用了兩個(gè)輔助數(shù)組來存儲(chǔ)左側(cè)和右側(cè)的乘積,空間復(fù)雜度為 O(n)。

3. 解法三:空間優(yōu)化

解法三對(duì)解法二進(jìn)行了空間優(yōu)化,只使用一個(gè)輔助數(shù)組來記錄左側(cè)的乘積,并在計(jì)算右側(cè)乘積時(shí)即時(shí)更新結(jié)果。具體步驟如下:

public int[] productExceptSelf(int[] nums) {
   int n = nums.length;
   int[] output = new int[n];
   
   output[0] = 1;
   for (int i = 1; i < n; i++) {
       output[i] = output[i - 1] * nums[i - 1];
  }
   
   int rightProduct = 1;
   for (int i = n - 1; i >= 0; i--) {
       output[i] *= rightProduct;
       rightProduct *= nums[i];
  }
   
   return output;
}

時(shí)間復(fù)雜度分析:

  • 第一個(gè)循環(huán)遍歷數(shù)組,時(shí)間復(fù)雜度為 O(n)。
  • 第二個(gè)循環(huán)遍歷數(shù)組,時(shí)間復(fù)雜度為 O(n)。
  • 總體時(shí)間復(fù)雜度為 O(n)。

空間復(fù)雜度分析:

  • 只使用了一個(gè)輔助數(shù)組來存儲(chǔ)左側(cè)的乘積,空間復(fù)雜度為 O(n)。

結(jié)論

本文介紹了題目"除自身以外數(shù)組的乘積"的詳細(xì)描述,并給出了三種解法:暴力法、左右乘積列表和空間優(yōu)化。下面是它們的時(shí)間和空間復(fù)雜度的總結(jié):

解法

時(shí)間復(fù)雜度

空間復(fù)雜度

暴力法

O(n^2)

O(n)

左右乘積列表

O(n)

O(n)

空間優(yōu)化

O(n)

O(n)

從復(fù)雜度分析可以看出,解法二和解法三都能夠在線性時(shí)間內(nèi)完成計(jì)算,而且空間復(fù)雜度也相對(duì)較低。因此,解法二和解法三是更優(yōu)的解決方案。

在實(shí)際應(yīng)用中,根據(jù)具體的問題和要求,選擇合適的解法可以提高算法的效率和性能。希望本文能夠幫助讀者理解和掌握解決"除自身以外數(shù)組的乘積"問題的不同解法,并在實(shí)際編程中得到應(yīng)用。如果想要了解更多數(shù)組相關(guān)的問題和解法,建議進(jìn)一步學(xué)習(xí)相關(guān)的算法和數(shù)據(jù)結(jié)構(gòu)知識(shí)。

責(zé)任編輯:華軒 來源: 科學(xué)隨想錄
相關(guān)推薦

2020-11-03 19:52:54

Java數(shù)組編程語言

2021-04-08 19:20:58

循環(huán)鏈表模擬

2011-01-18 15:35:59

jQueryJavaScriptweb

2009-12-03 10:26:24

PHP函數(shù)strrev

2009-08-04 09:09:56

Java常見異常

2022-05-27 11:33:02

前端代碼設(shè)計(jì)模式

2021-08-10 15:44:37

PostgreSQL表分區(qū)分區(qū)表

2012-08-15 10:44:07

JavaXML

2012-08-14 13:30:00

XML

2020-10-21 10:37:37

混合云

2013-10-16 16:07:32

乘積面試題

2021-05-18 14:32:42

NFT應(yīng)用藝術(shù)

2020-11-19 10:29:19

首席信息官AIIT部門

2023-06-25 07:57:31

2019-09-02 14:44:15

云計(jì)算云安全云取證

2021-11-11 11:24:54

JavaScript模型事件

2025-03-19 10:22:09

JavaScript編程語言開發(fā)

2018-08-21 10:05:59

MySQLbinlog數(shù)據(jù)庫(kù)

2023-04-13 07:41:14

RoCE技術(shù)RDMA

2010-09-24 19:18:22

SQL索引
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产区在线视频 | 色综合中文 | 国产一区影院 | 黄视频网址 | 色偷偷噜噜噜亚洲男人 | 成人精品视频免费 | 在线观看国产精品视频 | 中文字幕亚洲视频 | 精品久久久久久久久久久 | 亚洲一区二区三区视频 | 国产精品视频免费观看 | 日本一区二区在线视频 | 一本一道久久a久久精品蜜桃 | 毛片免费观看视频 | 亚洲成人午夜电影 | 黄色av大片 | 日韩一二三区视频 | 久久a久久 | 日韩一区二区三区四区五区六区 | 免费高清av | 网站黄色在线 | 亚洲欧美日韩在线一区二区 | 国产成人精品一区二区三区 | 婷婷综合 | 欧美最猛黑人 | 黄色av网站免费看 | 一区日韩 | 国产精品国产三级国产aⅴ入口 | 99reav| 欧美在线精品一区 | 日韩影院在线观看 | 亚洲成av| 一区二区三区播放 | 国产精品久久影院 | 91久久久精品国产一区二区蜜臀 | 午夜tv免费观看 | 精品一区二区免费视频 | 欧美日韩电影一区二区 | 久久久久久久一区二区三区 | 91视频在线看 | 久久成人综合 |