日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Two Sum系列問題的核心思想

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:算法與數(shù)據(jù)結(jié)構(gòu) ? 2019-11-27 16:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Two Sum系列問題在 LeetCode 上有好幾道,這篇文章就挑出有代表性的兩道,介紹一下這種問題怎么解決。

TwoSum I

這個問題的最基本形式是這樣:給你一個數(shù)組和一個整數(shù)target,可以保證數(shù)組中存在兩個數(shù)的和為target,請你返回這兩個數(shù)的索引。

比如輸入nums = [3,1,3,6],target = 6,算法應(yīng)該返回數(shù)組[0,2],因?yàn)?3 + 3 = 6。

這個問題如何解決呢?首先最簡單粗暴的辦法當(dāng)然是窮舉了:

這個解法非常直接,時間復(fù)雜度 O(N^2),空間復(fù)雜度 O(1)。

更好一點(diǎn)的解法,可以通過一個哈希表減少時間復(fù)雜度:

這樣,由于哈希表的查詢時間為 O(1),算法的時間復(fù)雜度降低到 O(N),但是需要 O(N) 的空間復(fù)雜度來存儲哈希表。不過綜合來看,是要比暴力解法高效的。

我覺得 Two Sum 系列問題就是想教我們?nèi)绾问褂霉1硖幚韱栴}。我們接著往后看。

TwoSum II

稍微修改一下上面的問題,要求我們設(shè)計一個類,擁有兩個 API

classTwoSum{ //向數(shù)據(jù)結(jié)構(gòu)中添加一個數(shù)number publicvoidadd(intnumber); //尋找當(dāng)前數(shù)據(jù)結(jié)構(gòu)中是否存在兩個數(shù)的和為value publicbooleanfind(intvalue); }

如何實(shí)現(xiàn)這兩個 API 呢,我們可以仿照上一道題目,使用一個哈希表輔助find方法:

進(jìn)行find的時候有兩種情況,舉個例子:

情況一:如果連續(xù) add 了[3,2,3,5],那么freq是{3:2,2:1,5:1},執(zhí)行find(6),由于 3 出現(xiàn)了兩次,3 + 3 = 6,所以返回 true。

情況二:freq是{3:2,2:1,5:1},執(zhí)行find(7),那么key為 2,other為 5 時算法可以返回 true。

除了上述兩種情況外,find只能返回 false 了。

對于這個解法的時間復(fù)雜度呢,add方法是 O(1),find方法是 O(N),空間復(fù)雜度為 O(N),和上一道題目比較類似。

但是對于 API 的設(shè)計,是需要考慮現(xiàn)實(shí)情況的。比如說,我們設(shè)計的這個類,使用find方法非常頻繁,那么每次都要 O(N) 的時間,豈不是很浪費(fèi)費(fèi)時間嗎?對于這種情況,我們是否可以做些優(yōu)化呢?

是的,對于頻繁使用find方法的場景,我們可以進(jìn)行優(yōu)化。我們可以參考上一道題目的暴力解法,借助哈希集合來針對性優(yōu)化find方法:

這樣sum中就儲存了所有加入數(shù)字可能組成的和,每次find只要花費(fèi) O(1) 的時間在集合中判斷一下是否存在就行了,顯然非常適合頻繁使用find的場景。

三、總結(jié)

對于 TwoSum 問題,一個難點(diǎn)就是給的數(shù)組無序。對于一個無序的數(shù)組,我們似乎什么技巧也沒有,只能暴力窮舉所有可能。

一般情況下,我們會首先把數(shù)組排序再考慮雙指針技巧。TwoSum 啟發(fā)我們,HashMap 或者 HashSet 也可以幫助我們處理無序數(shù)組相關(guān)的簡單問題。

另外,設(shè)計的核心在于權(quán)衡,利用不同的數(shù)據(jù)結(jié)構(gòu),可以得到一些針對性的加強(qiáng)。

最后,如果 TwoSum I 中給的數(shù)組是有序的,應(yīng)該如何編寫算法呢?答案很簡單,前文雙指針技巧匯總寫過:

int[]twoSum(int[]nums,inttarget){ intleft=0,right=nums.length-1; while(lefttarget){ right--;//讓sum小一點(diǎn) } } //不存在這樣兩個數(shù) returnnewint[]{-1,-1}; }

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4897

    瀏覽量

    90314
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    420

    瀏覽量

    27481

原文標(biāo)題:Two Sum 問題的核心思想

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    無線通信的“隱形骨架”:一文讀懂OSI七層模型

    ,帶你快速理解OSI七層的核心思想——分層。從物理層到應(yīng)用層,每一層負(fù)責(zé)什么?為什么說它是網(wǎng)絡(luò)通信的“圣經(jīng)”?如何用它來排查網(wǎng)絡(luò)故障?一文講透,幫你真正看懂?dāng)?shù)字世界如
    的頭像 發(fā)表于 03-16 09:41 ?453次閱讀
    無線通信的“隱形骨架”:一文讀懂OSI七層模型

    從氣體賦能到微觀霧化:深度解析AAFI技術(shù)如何破解重油發(fā)動機(jī)燃燒難題

    空氣輔助燃油噴射技術(shù),本質(zhì)上屬于雙流體霧化技術(shù)范疇。其核心思想在于,利用一股高速流動的壓縮氣體(氣相工質(zhì))與液態(tài)燃油(液相工質(zhì))發(fā)生強(qiáng)烈的相互作用,通過氣動剪切力、界面不穩(wěn)定性以及氣泡膨脹等多重物理機(jī)制,將燃油破碎成微細(xì)液滴,從而實(shí)現(xiàn)高效霧化。
    的頭像 發(fā)表于 01-14 10:50 ?541次閱讀
    從氣體賦能到微觀霧化:深度解析AAFI技術(shù)如何破解重油發(fā)動機(jī)燃燒難題

    一文說透了如何實(shí)現(xiàn)單片機(jī)的多任務(wù)并發(fā)!

    資源,并且避免出現(xiàn)資源爭搶和堵塞的情況。 在單片機(jī)多任務(wù)并發(fā)中,常見的任務(wù)調(diào)度方式有兩種: 1. 時間片輪轉(zhuǎn)法 時間片輪轉(zhuǎn)法是多任務(wù)并發(fā)中最基本的調(diào)度算法之一,它的核心思想是輪流分配 CPU 時間片
    發(fā)表于 01-06 06:46

    CW32L012的PID溫度控制——算法基礎(chǔ)

    PID 控制算法是比例(Proportional)- 積分(Integral)- 微分(Derivative) 控制的簡稱,是工業(yè)控制、嵌入式系統(tǒng)中最經(jīng)典、應(yīng)用最廣泛的閉環(huán)控制算法。它的核心思想
    的頭像 發(fā)表于 01-05 16:27 ?2340次閱讀
    CW32L012的PID溫度控制——算法基礎(chǔ)

    2CL 系列二極管核心優(yōu)勢

    高壓電子設(shè)備的整流核心元件,高壓超快恢復(fù)核心——2CL 系列
    的頭像 發(fā)表于 12-19 14:14 ?643次閱讀

    卸荷槽結(jié)構(gòu)創(chuàng)新:運(yùn)動學(xué)法卸荷槽對齒輪泵容積效率提升機(jī)理及流量脈動抑制研究

    基于運(yùn)動法的卸荷槽設(shè)計核心思想是:從齒輪嚙合的運(yùn)動規(guī)律出發(fā),精確分析困油容積的變化特性,以此為指導(dǎo)設(shè)計卸荷槽的位置、形狀和尺寸。與傳統(tǒng)方法相比,運(yùn)動法考慮了齒輪嚙合過程中的連續(xù)運(yùn)動特性,能夠更精準(zhǔn)地預(yù)測困油容積的變化趨勢,從而實(shí)現(xiàn)卸荷槽的精準(zhǔn)設(shè)計。
    的頭像 發(fā)表于 11-25 10:16 ?906次閱讀
    卸荷槽結(jié)構(gòu)創(chuàng)新:運(yùn)動學(xué)法卸荷槽對齒輪泵容積效率提升機(jī)理及流量脈動抑制研究

    航空混合電推進(jìn)系統(tǒng)構(gòu)型分析與性能收益研究:串聯(lián)與并聯(lián)技術(shù)的路徑對比與展望

    混合電推進(jìn)系統(tǒng)的核心思想是將產(chǎn)生動力的裝置與產(chǎn)生推力的裝置分離,通過電能分配與能量管理,使燃?xì)鉁u輪發(fā)動機(jī)始終工作在最佳工況點(diǎn),同時通過分布式推進(jìn)改善飛機(jī)氣動特性。
    的頭像 發(fā)表于 10-31 10:39 ?1020次閱讀
    航空混合電推進(jìn)系統(tǒng)構(gòu)型分析與性能收益研究:串聯(lián)與并聯(lián)技術(shù)的路徑對比與展望

    實(shí)現(xiàn)環(huán)境計算真正的瓶頸究竟在哪里

    20世紀(jì)90年代初,計算機(jī)科學(xué)家Mark Weiser提出了“泛在計算”的理念,其核心思想是讓技術(shù)融入日常生活環(huán)境中[1]。盡管智能家居組件、傳感器網(wǎng)絡(luò)和智能設(shè)備取得了進(jìn)展,但環(huán)境計算這一概念依然難以實(shí)現(xiàn)。如今,我們已經(jīng)擁有了硬件基礎(chǔ)和連接能力。那么,真正的瓶頸究竟在哪里?
    的頭像 發(fā)表于 09-10 16:21 ?1003次閱讀

    【「DeepSeek 核心技術(shù)揭秘」閱讀體驗(yàn)】+看視頻+看書籍+國產(chǎn)開源大模型DeepSeekV3技術(shù)詳解--1

    Cache 瓶頸問題。 我們將結(jié)合左側(cè)的架構(gòu)圖和右側(cè)的數(shù)學(xué)公式,一步步進(jìn)行推導(dǎo)和解釋。 1. 技術(shù)背景和核心思想 問題: 標(biāo)準(zhǔn)的 Transformer 在處理長文本時,需要緩存所有過去 token
    發(fā)表于 08-23 15:20

    從入門級到旗艦款,全志T系列核心板怎么選?

    面對FET113i-S核心板、FET527N-C核心板和FET536-C核心板三款主流明星產(chǎn)品,工程師該如何選擇?本文將從核心配置、功能特性到行業(yè)適配性進(jìn)行全方位解析,助您找到匹配項(xiàng)目
    的頭像 發(fā)表于 06-27 08:06 ?1962次閱讀
    從入門級到旗艦款,全志T<b class='flag-5'>系列</b><b class='flag-5'>核心</b>板怎么選?

    鴻蒙5開發(fā)寶藏案例分享---應(yīng)用性能優(yōu)化指南

    頓,打造絲滑應(yīng)用! **1. 控制狀態(tài)刷新 ** ? 核心思想 :狀態(tài)變量是UI刷新的觸發(fā)器,濫用會導(dǎo)致性能劣化。優(yōu)化策略 : 精簡狀態(tài)變量 : 普通變量別用 <span class
    發(fā)表于 06-12 17:17

    免費(fèi)分享Arduino入門+進(jìn)階(全套例程+書籍)

    Arduino是一款開源電子原型平臺,由硬件(單片機(jī)開發(fā)板)和軟件(編程環(huán)境)組成,旨在讓非專業(yè)用戶也能輕松入門電子制作和編程。它的核心思想是簡化硬件開發(fā),通過直觀的編程和模塊化設(shè)計,讓用戶快速實(shí)現(xiàn)
    的頭像 發(fā)表于 05-22 11:40 ?1344次閱讀
    免費(fèi)分享Arduino入門+進(jìn)階(全套例程+書籍)

    北京君正如何借力開源實(shí)現(xiàn)戰(zhàn)略轉(zhuǎn)型

    核心思想:指令集自主是生態(tài)可控的前提,君正如何借力開源實(shí)現(xiàn)戰(zhàn)略轉(zhuǎn)型。
    的頭像 發(fā)表于 05-19 16:15 ?1314次閱讀

    相位累加器的實(shí)現(xiàn)原理

    標(biāo)題中所提到的DDS,我感覺這兩個放一起也可以,因?yàn)镈DS的核心思想就是使用的相位累加器。那么這玩意兒的作用是啥?簡單來說就是在FPGA工作主頻之下,可以生成任意頻率的周期信號出來。
    的頭像 發(fā)表于 05-16 13:56 ?1293次閱讀
    相位累加器的實(shí)現(xiàn)原理

    3568系列核心板:散熱難題這樣解決,你學(xué)會了嗎?

    在智能硬件領(lǐng)域,高性能核心板的散熱設(shè)計至關(guān)重要。本文將介紹ZLG致遠(yuǎn)電子3568系列核心版的高性能特性及其散熱解決方案,幫助您更好地了解產(chǎn)品優(yōu)勢。3568系列
    的頭像 發(fā)表于 05-15 11:34 ?1051次閱讀
    3568<b class='flag-5'>系列</b><b class='flag-5'>核心</b>板:散熱難題這樣解決,你學(xué)會了嗎?
    堆龙德庆县| 玉环县| 汾阳市| 临沭县| 慈溪市| 清涧县| 化隆| 沁源县| 黄浦区| 治县。| 恩平市| 甘孜县| 石景山区| 河池市| 梅河口市| 临漳县| 桐乡市| 古蔺县| 同仁县| 乌兰县| 左贡县| 博客| 霍山县| 什邡市| 韩城市| 盐池县| 荔波县| 交城县| 镇坪县| 青龙| 城步| 道孚县| 桐柏县| 吴忠市| 江山市| 兴仁县| 永城市| 图木舒克市| 宣汉县| 惠东县| 呈贡县|