日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

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

來源: 責(zé)編: 時間:2023-12-25 17:28:56 222觀看
導(dǎo)讀在處理數(shù)組相關(guān)的問題時,有時候需要計算除數(shù)組中某個元素以外的所有元素的乘積。這個問題可以通過多種方法解決。本文將首先給出題目的詳細描述,然后介紹三種解法,并提供相應(yīng)的Java代碼示例。最后,對每種解法進行時間和空

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

UDA28資訊網(wǎng)——每日最新資訊28at.com

題目描述

給定一個整數(shù)數(shù)組 nums,返回一個數(shù)組 output,其中 output[i] 等于除 nums[i] 之外的所有元素的乘積。UDA28資訊網(wǎng)——每日最新資訊28at.com

注意:請不要使用除法,且在 O(n) 時間復(fù)雜度內(nèi)完成此問題的解決。UDA28資訊網(wǎng)——每日最新資訊28at.com

示例:UDA28資訊網(wǎng)——每日最新資訊28at.com

輸入: [1, 2, 3, 4]UDA28資訊網(wǎng)——每日最新資訊28at.com

輸出: [24, 12, 8, 6]UDA28資訊網(wǎng)——每日最新資訊28at.com

解釋: 除了自身以外的乘積為:[2x3x4, 1x3x4, 1x2x4, 1x2x3] = [24, 12, 8, 6]UDA28資訊網(wǎng)——每日最新資訊28at.com

1. 解法一:暴力法

暴力法是最簡單直接的解法,即對于數(shù)組中的每個元素,都計算除自身以外的其他元素的乘積。具體步驟如下:UDA28資訊網(wǎng)——每日最新資訊28at.com

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;}

時間復(fù)雜度分析:UDA28資訊網(wǎng)——每日最新資訊28at.com

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

空間復(fù)雜度分析:UDA28資訊網(wǎng)——每日最新資訊28at.com

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

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

解法二利用兩個輔助數(shù)組,分別記錄每個元素左側(cè)和右側(cè)的乘積。具體步驟如下:UDA28資訊網(wǎng)——每日最新資訊28at.com

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;}

時間復(fù)雜度分析:UDA28資訊網(wǎng)——每日最新資訊28at.com

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

空間復(fù)雜度分析:UDA28資訊網(wǎng)——每日最新資訊28at.com

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

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

解法三對解法二進行了空間優(yōu)化,只使用一個輔助數(shù)組來記錄左側(cè)的乘積,并在計算右側(cè)乘積時即時更新結(jié)果。具體步驟如下:UDA28資訊網(wǎng)——每日最新資訊28at.com

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;}

時間復(fù)雜度分析:UDA28資訊網(wǎng)——每日最新資訊28at.com

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

空間復(fù)雜度分析:UDA28資訊網(wǎng)——每日最新資訊28at.com

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

結(jié)論

本文介紹了題目"除自身以外數(shù)組的乘積"的詳細描述,并給出了三種解法:暴力法、左右乘積列表和空間優(yōu)化。下面是它們的時間和空間復(fù)雜度的總結(jié):UDA28資訊網(wǎng)——每日最新資訊28at.com

解法UDA28資訊網(wǎng)——每日最新資訊28at.com

時間復(fù)雜度UDA28資訊網(wǎng)——每日最新資訊28at.com

空間復(fù)雜度UDA28資訊網(wǎng)——每日最新資訊28at.com

暴力法UDA28資訊網(wǎng)——每日最新資訊28at.com

O(n^2)UDA28資訊網(wǎng)——每日最新資訊28at.com

O(n)UDA28資訊網(wǎng)——每日最新資訊28at.com

左右乘積列表UDA28資訊網(wǎng)——每日最新資訊28at.com

O(n)UDA28資訊網(wǎng)——每日最新資訊28at.com

O(n)UDA28資訊網(wǎng)——每日最新資訊28at.com

空間優(yōu)化UDA28資訊網(wǎng)——每日最新資訊28at.com

O(n)UDA28資訊網(wǎng)——每日最新資訊28at.com

O(n)UDA28資訊網(wǎng)——每日最新資訊28at.com

從復(fù)雜度分析可以看出,解法二和解法三都能夠在線性時間內(nèi)完成計算,而且空間復(fù)雜度也相對較低。因此,解法二和解法三是更優(yōu)的解決方案。UDA28資訊網(wǎng)——每日最新資訊28at.com

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

本文鏈接:http://www.www897cc.com/showinfo-26-54008-0.html除自身以外數(shù)組的乘積:三種解法及Java代碼示例

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 10分鐘了解Python黑魔法 Yield、Iterator、Generator

下一篇: jstat,一把Java程序員必備的瑞士軍刀

標(biāo)簽:
  • 熱門焦點
  • 石頭智能洗地機A10 Plus體驗:雙向自清潔治好了我的懶癌

    一、前言和介紹專為家庭請假懶人而生的石頭科技在近日又帶來了自己的全新旗艦新品,石頭智能洗地機A10 Plus。從這個產(chǎn)品名上就不難看出,這次石頭推出的并不是常見的掃地機器
  • 6月安卓手機性能榜:vivo/iQOO霸占旗艦排行榜前三

    2023年上半年已經(jīng)正式過去了,我們也迎來了安兔兔V10版本,在新的驍龍8Gen3和天璣9300發(fā)布之前,性能榜的榜單大體會以驍龍8Gen2和天璣9200+為主,至于那顆3.36GHz的驍龍8Gen2領(lǐng)先
  • 十個可以手動編寫的 JavaScript 數(shù)組 API

    JavaScript 中有很多API,使用得當(dāng),會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結(jié)。現(xiàn)在開始吧。1.forEach()forEach()用于遍歷數(shù)組接收一參
  • 三分鐘白話RocketMQ系列—— 如何發(fā)送消息

    我們知道RocketMQ主要分為消息 生產(chǎn)、存儲(消息堆積)、消費 三大塊領(lǐng)域。那接下來,我們白話一下,RocketMQ是如何發(fā)送消息的,揭秘消息生產(chǎn)全過程。注意,如果白話中不小心提到相關(guān)代
  • 慕巖炮轟抖音,百合網(wǎng)今何在?

    來源:價值研究所 作者:Hernanderz&ldquo;難道就因為自己的一個產(chǎn)品牛逼了,從客服到總裁,都不愿意正視自己產(chǎn)品和運營上的問題,選擇逃避了嗎?&rdquo;這一番話,出自百合網(wǎng)聯(lián)合創(chuàng)
  • 中國家電海外掘金正當(dāng)時|出海專題

    作者|吳南南編輯|胡展嘉運營|陳佳慧出品|零態(tài)LT(ID:LingTai_LT)2023年,出海市場戰(zhàn)況空前,中國創(chuàng)業(yè)者在海外紛紛摩拳擦掌,以期能夠把中國的商業(yè)模式、創(chuàng)業(yè)理念、戰(zhàn)略打法輸出海外,他們依
  • 年輕人的“職場羞恥感”,無處不在

    作者:馮曉亭 陶 淘 李 欣 張 琳 馬舒葉來源:燃次元&ldquo;人在職場,應(yīng)該選擇什么樣的著裝?&rdquo;近日,在網(wǎng)絡(luò)上,一個與著裝相關(guān)的帖子引發(fā)關(guān)注,在該帖子里,一位在高級寫字樓亞洲金
  • 支持aptX Lossless無損傳輸 iQOO TWS 1賽道版發(fā)布限時優(yōu)惠價369元

    2023年7月4日,“無損音質(zhì),聲動人心”iQOO TWS 1正式發(fā)布,支持aptX Lossless無損傳輸,限時優(yōu)惠價369元。iQOO TWS 1耳機率先支持端到端aptX Lossless無
  • 利用職權(quán)私自解除被封帳號 Meta開除20多名員工

    11月18日消息,據(jù)外媒援引知情人士表示,過去一年時間內(nèi),F(xiàn)acebook母公司Meta解雇或處罰了20多名員工以及合同工,指控這些人通過內(nèi)部系統(tǒng)以不當(dāng)方式重置用戶帳號,其
Top 主站蜘蛛池模板: 六安市| 灵武市| 合江县| 名山县| 东莞市| 农安县| 绥中县| 诸城市| 兖州市| 湘阴县| 永济市| 桑日县| 电白县| 宜宾县| 五原县| 工布江达县| 西和县| 衡山县| 华阴市| 天长市| 阜平县| 沾益县| 乾安县| 广丰县| 古蔺县| 武陟县| 西畴县| 永昌县| 江达县| 武定县| 嘉黎县| 宝兴县| 郯城县| 寿宁县| 鸡西市| 莫力| 靖边县| 四平市| 延安市| 新绛县| 青冈县|