色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Two Sum系列問題的核心思想

算法與數據結構 ? 來源:算法與數據結構 ? 2019-11-27 16:04 ? 次閱讀

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

TwoSum I

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

比如輸入nums = [3,1,3,6],target = 6,算法應該返回數組[0,2],因為 3 + 3 = 6。

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

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

更好一點的解法,可以通過一個哈希表減少時間復雜度:

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

我覺得 Two Sum 系列問題就是想教我們如何使用哈希表處理問題。我們接著往后看。

TwoSum II

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

classTwoSum{ //向數據結構中添加一個數number publicvoidadd(intnumber); //尋找當前數據結構中是否存在兩個數的和為value publicbooleanfind(intvalue); }

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

進行find的時候有兩種情況,舉個例子:

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

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

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

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

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

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

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

三、總結

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

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

另外,設計的核心在于權衡,利用不同的數據結構,可以得到一些針對性的加強。

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 存儲
    +關注

    關注

    13

    文章

    4404

    瀏覽量

    86419
  • 數組
    +關注

    關注

    1

    文章

    418

    瀏覽量

    26100

原文標題:Two Sum 問題的核心思想

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦

    【米爾RK3576開發板評測】+項目名稱RetinaFace人臉檢測

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

    電子工程師的電路設計經驗分享

    本文分享了電子工程師在電路設計方面的豐富經驗,包括項目開發步驟、電路設計核心思想、元器件選擇與優化等內容,旨在幫助初學者快速提升電路設計能力。
    的頭像 發表于 01-21 15:13 ?269次閱讀

    如何在Excel中靈活運用SUMIF函數

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

    利用OpenVINO部署Qwen2多模態模型

    多模態大模型的核心思想是將不同媒體數據(如文本、圖像、音頻和視頻等)進行融合,通過學習不同模態之間的關聯,實現更加智能化的信息處理。簡單來說,多模態大模型可以可以理解多種不同模態的輸入數據,并輸出相應反饋結果,例如圖像理解,語音識別,視覺問題等。
    的頭像 發表于 10-18 09:39 ?695次閱讀

    零電壓開關技術的基本介紹

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

    什么是零電壓開關?它有哪些特性?

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

    Transformer架構在自然語言處理中的應用

    隨著人工智能技術的飛速發展,自然語言處理(NLP)領域取得了顯著的進步。其中,Transformer架構的提出,為NLP領域帶來了革命性的變革。本文將深入探討Transformer架構的核心思想、組成部分以及在自然語言處理領域的應用,旨在幫助讀者全面理解并應用這一革命性的技術。
    的頭像 發表于 07-09 11:42 ?1088次閱讀

    遷移學習的基本概念和實現方法

    遷移學習(Transfer Learning)是機器學習領域中的一個重要概念,其核心思想是利用在一個任務或領域中學到的知識來加速或改進另一個相關任務或領域的學習過程。這種方法在數據稀缺或領域遷移的情況下尤為有效,因為它能夠顯著減少對大量標記數據的需求,提高模型的學習效率和泛化能力。
    的頭像 發表于 07-04 17:30 ?2180次閱讀

    循環神經網絡的基本概念

    循環神經網絡(Recurrent Neural Network,簡稱RNN)是一種具有循環結構的神經網絡,其核心思想是將前一個時間步的輸出作為下一個時間步的輸入,從而實現對序列數據的建模。本文將從
    的頭像 發表于 07-04 14:31 ?925次閱讀

    伺服電機矢量控制原理詳解

    伺服電機矢量控制作為現代電機控制技術的重要分支,廣泛應用于工業自動化、精密加工、機器人技術等領域。其核心思想是通過模擬直流電機的控制原理,實現對交流電機的高效、精確控制。本文將詳細闡述伺服電機矢量控制的原理,包括其理論基礎、控制策略、實現方法以及應用領域等方面。
    的頭像 發表于 06-18 17:58 ?1320次閱讀

    信號分析的基本思想是什么

    信號分析是一種研究信號特性、提取有用信息的方法。它在通信、電子、控制、生物醫學等領域具有廣泛的應用。本文將詳細介紹信號分析的基本思想、方法和應用。 一、信號分析的基本思想 信號分析的基本思想是通過
    的頭像 發表于 06-03 10:28 ?988次閱讀

    FPGA核心板上市!紫光同創Logos-2和Xilinx Artix-7系列

    隨著嵌入式的快速發展,在工控、通信、5G通信領域,FPGA以其超靈活的可編程能力,被越來越多的工程師選擇。近日,米爾電子發布2款FPGA的核心板和開發板,型號分別為:基于紫光同創Logos-2系列
    的頭像 發表于 05-30 08:01 ?1549次閱讀
    FPGA<b class='flag-5'>核心</b>板上市!紫光同創Logos-2和Xilinx Artix-7<b class='flag-5'>系列</b>

    如何將每個框架插入到SLAM框架中

    LinK3D的核心思想和基于我們的LinK3D的兩個LiDAR掃描的匹配結果。綠色線是有效匹配。當前關鍵點(黑色,CK)的描述符用其相鄰關鍵點來表示。描述符的每個維度對應于扇區區域。
    的頭像 發表于 04-30 12:55 ?683次閱讀
    如何將每個框架插入到SLAM框架中

    淺談工業相機的圖像緩沖技術

    圖像緩沖技術的原理主要涉及對圖像數據的存儲、處理和輸出過程。其核心思想是利用計算機內存中的緩沖區來暫存圖像數據,以便在需要時能夠快速、連續地顯示圖像。
    的頭像 發表于 03-26 17:01 ?1241次閱讀
    淺談工業相機的圖像緩沖技術

    華為P70系列核心配置曝光

    數碼博主“數碼閑聊站”曝光了華為P70系列部分核心配置,確定了屏幕尺寸、后攝Deco布局和主攝傳感器。
    發表于 03-15 11:26 ?1773次閱讀
    華為P70<b class='flag-5'>系列</b><b class='flag-5'>核心</b>配置曝光

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品
    主站蜘蛛池模板: 国产免费毛片在线观看 | 日本综艺大尺度无删减版在线 | 美女逼逼毛茸茸 | 亚在线观看免费视频入口 | 精品 在线 视频 亚洲 | 猫咪www958ii| 亚洲香蕉网久久综合影院 | 欧美激情久久久久久久大片 | 日韩精品熟女一区二区三区中文 | 性直播免费 | 欧美高清video mr.sexo | 午夜性色一区二区三区不卡视频 | 亚洲精品沙发午睡系列 | 国产在线一区二区三区四区 | 久久久久久久伊人电影 | 国产亚洲日韩在线播放不卡 | 快穿做妓女好爽H | 久久re6热在线视频 久久er国产免费精品 | 摸董事长的裤裆恋老小说 | 在线免费观看成年人视频 | 校花娇喘呻吟校长陈若雪视频 | 8X拨牐拨牐X8免费视频8 | asian极品呦女xx农村 | 丰满女朋友在线观看中文 | 国内精品久久久久影院男同志 | 亚洲中文字幕一二三四区苍井空 | 扒开老师大腿猛进AAA片邪恶 | XXX欧美性兽交 | 在线免费观看亚洲视频 | 亚洲国产综合另类视频 | 午夜一级毛片看看 | 真实国产乱子伦精品一区二区三区 | 久久午夜夜伦痒痒想咳嗽P 久久午夜夜伦鲁鲁片无码免费 | 九九热精品在线 | 竹菊影视一区二区三区 | 中字幕久久久人妻熟女天美传媒 | FREE性丰满HD毛多多 | 国产精品久久久久久久久久免费 | 欧美性猛交AAA片 | 美女扒开尿口直播 | 公主纯肉高H文 |