chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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)該返回?cái)?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è)計(jì)一個類,擁有兩個 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è)計(jì),是需要考慮現(xiàn)實(shí)情況的。比如說,我們設(shè)計(jì)的這個類,使用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è)計(jì)的核心在于權(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)系本站處理。 舉報(bào)投訴
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4533

    瀏覽量

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

    關(guān)注

    1

    文章

    420

    瀏覽量

    26547

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

    面對FET113i-S核心板、FET527N-C核心板和FET536-C核心板三款主流明星產(chǎn)品,工程師該如何選擇?本文將從核心配置、功能特性到行業(yè)適配性進(jìn)行全方位解析,助您找到匹配項(xiàng)目
    的頭像 發(fā)表于 06-27 08:06 ?456次閱讀
    從入門級到旗艦款,全志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è)計(jì),讓用戶快速實(shí)現(xiàn)
    的頭像 發(fā)表于 05-22 11:40 ?265次閱讀
    免費(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 ?403次閱讀

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

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

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

    在智能硬件領(lǐng)域,高性能核心板的散熱設(shè)計(jì)至關(guān)重要。本文將介紹ZLG致遠(yuǎn)電子3568系列核心版的高性能特性及其散熱解決方案,幫助您更好地了解產(chǎn)品優(yōu)勢。3568系列
    的頭像 發(fā)表于 05-15 11:34 ?196次閱讀
    3568<b class='flag-5'>系列</b><b class='flag-5'>核心</b>板:散熱難題這樣解決,你學(xué)會了嗎?

    完整版—單片機(jī)編程思想(推薦下載!)

    單片機(jī)的編程思想,希望能幫助大家寫出簡明的代碼 內(nèi)容簡介 以單片機(jī)裸環(huán)境為基礎(chǔ),為編程者定義了一個微操作系統(tǒng)(MOS)的編程環(huán)境,并面向應(yīng)用中不斷提高的需求對編程策略進(jìn)行了深度剖析與研究,從而分離
    發(fā)表于 04-16 15:06

    AI也有人格面具,竟會討好人類?大模型的「小心思」正在影響人類判斷

    你是否想過,LLM也有著自己的小心思?最新研究揭示了一個有趣的現(xiàn)象:LLM在被研究人員測試時,會有意識地改變自己的行為。在面對那些旨在評估人格特質(zhì)的問題時,它們給出的答案會盡可能地討人喜歡,符合社會
    的頭像 發(fā)表于 04-08 11:37 ?674次閱讀
    AI也有人格面具,竟會討好人類?大模型的「小<b class='flag-5'>心思</b>」正在影響人類判斷

    2x30W,60W無濾波器的高效模式-D類立體聲音頻功率放大器-IML6603

    ?D類立體聲音頻功率放大器的工作原理?基于脈寬調(diào)制(PWM)技術(shù)。其核心思想是將輸入的模擬信號轉(zhuǎn)換為脈沖流,并通過開關(guān)晶體管(通常是MOSFET)進(jìn)行放大。
    的頭像 發(fā)表于 03-25 09:32 ?370次閱讀
    2x30W,60W無濾波器的高效模式-D類立體聲音頻功率放大器-IML6603

    【米爾RK3576開發(fā)板評測】+項(xiàng)目名稱RetinaFace人臉檢測

    一、簡介 Pytorch_Retinaface?是一個基于PyTorch框架實(shí)現(xiàn)的人臉檢測算法,它能夠快速而準(zhǔn)確地檢測出圖像中的人臉,并提供豐富的特征信息。該算法的核心思想是使用多尺度的錨點(diǎn)框
    發(fā)表于 02-15 13:28

    電子工程師的電路設(shè)計(jì)經(jīng)驗(yàn)分享

    本文分享了電子工程師在電路設(shè)計(jì)方面的豐富經(jīng)驗(yàn),包括項(xiàng)目開發(fā)步驟、電路設(shè)計(jì)核心思想、元器件選擇與優(yōu)化等內(nèi)容,旨在幫助初學(xué)者快速提升電路設(shè)計(jì)能力。
    的頭像 發(fā)表于 01-21 15:13 ?708次閱讀

    如何在Excel中靈活運(yùn)用SUMIF函數(shù)

    在Excel中, SUMIF 函數(shù)是一個非常有用的工具,它可以根據(jù)指定的條件對一系列單元格進(jìn)行求和。 1. 基本用法 SUMIF 函數(shù)的基本語法是: SUMIF(range, criteria
    的頭像 發(fā)表于 10-30 09:53 ?1286次閱讀

    利用OpenVINO部署Qwen2多模態(tài)模型

    多模態(tài)大模型的核心思想是將不同媒體數(shù)據(jù)(如文本、圖像、音頻和視頻等)進(jìn)行融合,通過學(xué)習(xí)不同模態(tài)之間的關(guān)聯(lián),實(shí)現(xiàn)更加智能化的信息處理。簡單來說,多模態(tài)大模型可以可以理解多種不同模態(tài)的輸入數(shù)據(jù),并輸出相應(yīng)反饋結(jié)果,例如圖像理解,語音識別,視覺問題等。
    的頭像 發(fā)表于 10-18 09:39 ?1260次閱讀

    零電壓開關(guān)技術(shù)的基本介紹

    零電壓開關(guān)(Zero Voltage Switch,ZVS)技術(shù)是一種前沿的電力電子技術(shù),其核心思想是在開關(guān)管開通或關(guān)斷時,通過控制電壓或電流波形,使其在不產(chǎn)生顯著損耗的情況下完成開關(guān)動作。這種技術(shù)也被稱為軟開關(guān)技術(shù),因?yàn)樗茱@著減少開關(guān)過程中的電壓和電流重疊,從而降低開關(guān)損耗,提高電源效率。
    的頭像 發(fā)表于 10-10 10:16 ?2586次閱讀

    什么是零電壓開關(guān)?它有哪些特性?

    零電壓開關(guān)(Zero Voltage Switch,簡稱ZVS)是一種先進(jìn)的電力電子技術(shù),其核心思想是在開關(guān)管開通或關(guān)斷時,通過控制電壓或電流波形,使其在不產(chǎn)生顯著損耗的情況下完成開關(guān)動作。這種技術(shù)也被稱為軟開關(guān)技術(shù),因?yàn)樗茱@著減少開關(guān)過程中的電壓和電流重疊,從而降低開關(guān)損耗,提高電源效率。
    的頭像 發(fā)表于 08-21 16:16 ?5306次閱讀