<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 0001. 兩數之和 ## 題目地址(1. 兩數之和) <https://leetcode-cn.com/problems/two-sum> ## 題目描述 ``` <pre class="calibre18">``` 給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,并返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數組中同樣的元素。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] ``` ``` ## 前置知識 - 哈希表 ## 公司 - 字節 - 百度 - 騰訊 - adobe - airbnb - amazon - apple - bloomberg - dropbox - facebook - linkedin - microsoft - uber - yahoo - yelp ## 思路 最容易想到的就是暴力枚舉,我們可以利用兩層 for 循環來遍歷每個元素,并查找滿足條件的目標元素。不過這樣時間復雜度為 O(N^2),空間復雜度為 O(1),時間復雜度較高,我們要想辦法進行優化。我們可以增加一個 Map 記錄已經遍歷過的數字及其對應的索引值。這樣當遍歷一個新數字的時候去 Map 里查詢,target 與該數的差值是否已經在前面的數字中出現過。如果出現過,那么已經得出答案,就不必再往下執行了。 ## 關鍵點 - 求和轉換為求差 - 借助 Map 結構將數組中每個元素及其索引相互對應 - 以空間換時間,將查找時間從 O(N) 降低到 O(1) ## 代碼 - 語言支持:JS ``` <pre class="calibre18">``` <span class="hljs-title">/** * @param {number[]} nums * @param {number} target * @return {number[]} */</span> <span class="hljs-keyword">const</span> twoSum = <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">nums, target</span>) </span>{ <span class="hljs-keyword">const</span> map = <span class="hljs-keyword">new</span> <span class="hljs-params">Map</span>(); <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-params">0</span>; i < nums.length; i++) { <span class="hljs-keyword">const</span> diff = target - nums[i]; <span class="hljs-keyword">if</span> (map.has(diff)) { <span class="hljs-keyword">return</span> [map.get(diff), i]; } map.set(nums[i], i); } }; ``` ``` **復雜度分析** - 時間復雜度:O(N)O(N)O(N) - 空間復雜度:O(N)O(N)O(N) 更多題解可以訪問我的LeetCode題解倉庫:<https://github.com/azl397985856/leetcode> 。 目前已經37K star啦。 關注公眾號力扣加加,努力用清晰直白的語言還原解題思路,并且有大量圖解,手把手教你識別套路,高效刷題。 ![](https://img.kancloud.cn/cf/0f/cf0fc0dd21e94b443dd8bca6cc15b34b_900x500.jpg)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看