<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          力扣啟蒙 - 開啟算法的世界

          共 2647字,需瀏覽 6分鐘

           ·

          2021-05-01 09:12

          點擊上方 Java學(xué)習(xí)之道,選擇 設(shè)為星標

          每天18:30點,干貨準時奉上!

          Part1力扣

          刷力扣,刷力扣,力扣究竟是什么呢?

          力扣(LeetCode)是領(lǐng)扣網(wǎng)絡(luò)旗下專注于程序員技術(shù)成長和企業(yè)技術(shù)人才服務(wù)的品牌。源自美國硅谷,力扣為全球程序員提供了專業(yè)的IT技術(shù)職業(yè)化提升平臺,有效幫助程序員實現(xiàn)快速進步和長期成長。

          而刷力扣也就是在力扣的題庫里刷算法題。

          Part2力扣啟蒙

          下面來引入力扣的啟蒙題來感受一下算法題的魅力吧。

          1力扣第一題:

          兩數(shù)之和

          給定一個整數(shù)數(shù)組 nums 和一個整數(shù)目標值  target,請你在該數(shù)組中找出 和為目標值 的那 兩個整數(shù),并返回它們的 數(shù)組下標。

          你可以假設(shè)每種輸入只會對應(yīng)一個答案。但是,數(shù)組中同一個元素在答案里不能重復(fù)出現(xiàn)。

          你可以按任意順序返回答案。

          2解題思路

          • 暴力解法

          很多人新手看到這些題目,第一眼就是暴力跑法對吧? 但是都來練算法了暴力破解不是在真的沒辦法的情況下就算了。

          • 哈希映射

          讓我們來看看這道題比較優(yōu)等的解法吧 (算法只有更好,沒有最好)

          什么是哈希映射

          哈希表的結(jié)構(gòu)就是鍵值對的形式 >> [key -- value] 我們可以利用這個特殊的數(shù)據(jù)結(jié)構(gòu)來處理我們這道題目

          先來看看 Java的 HashMap API 中一個 方法.

          方法要求傳入一個鍵,會返回在該哈希表中是否存在跟傳入的鍵對應(yīng)的映射關(guān)系. 也就是說我們可以將沒有找的數(shù)組元素放進哈希表中,讓后面的元素去匹配。

          利用for循環(huán)來處理題目給出的數(shù)組,題目給出了一個 target, 我們就利用這個 target 和 數(shù)組中的數(shù)字相減來得到一個目標值,然后在哈希表中查找是否有這個值,有則可以找到題目所要的兩個目標索引,沒有找到的話就將值再 put 進表中。

          題解

          public int[] twoSum(int[] nums, int target) {
                  /* map的鍵為數(shù)組的元素 值為數(shù)組的元素下標 */
                  Map<Integer,Integer> map = new HashMap<>();
                  
                  /* 循環(huán)數(shù)組 */
                  for (int i = 0; i < nums.length; i++) {
                      if (map.containsKey(target - nums[i])){
                          return new int[]{map.get(target - nums[i]),i};
                      }
                      /* 遍歷開始時為空表,就直接將第一個元素put進表 */
                      /* 沒有找到對應(yīng)的映射就進行put */
                      map.put(nums[i], i);
                  }
                  /* 數(shù)組中沒有符合的兩個數(shù)字的情況,
                  但是題目已經(jīng)幫我們排除了這個可能性 */

                  return null;
              }

          測試結(jié)果

          該測試結(jié)果是在IDEA中通過 leetcode 插件自動生成題目提交測試代碼的,不會使用 leetcode插件的也可以通過 [刷leetcode神器] IDEA 插件 leetcode editor 查看。

          -- END --

           | 更多精彩文章 -


          加我微信,交個朋友
          長按/掃碼添加↑↑↑

          瀏覽 59
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  视频一区二区三区在线观看 | 伊人激情婷婷 | 三级片亚洲无码 | 色情网站免费在线观看 | 开心激情五月天成人网超碰 |