LeetCode 題解(一):Two Sum

来源:http://www.cnblogs.com/LcritZ/archive/2017/05/10/6838112.html
-Advertisement-
Play Games

LeetCode : two sum 第一次寫博客,算是熟悉這些編輯環境吧,本來是打算在csdn上用markdown寫的,結果改了博客介紹就被關閉了,暈死。。。好了,話不多說,今天打算拿LeetCode上的第一題:Two Sum來分享試驗一下。 題目描述:Given an array of inte ...


LeetCode : two sum

第一次寫博客,算是熟悉這些編輯環境吧,本來是打算在csdn上用markdown寫的,結果改了博客介紹就被關閉了,暈死。。。好了,話不多說,今天打算拿LeetCode上的第一題:Two Sum來分享試驗一下。 

 

題目描述:Given an array of integers, return indices of the two numbers such that they add up to a specific target. 

      You may assume that each input would have exactly one solution, and you may not use the same element twice.

例子:Given nums = [2, 7, 11, 15], target = 9,

   Because nums[0] + nums[1] = 2 + 7 = 9,

     return [0, 1].


分析:看到題目之後瞭解到需求為找到數組中兩個數之和滿足給定target的下標,保存在一個數組中返回。一個簡單的思路就是像冒泡排序一樣利用兩層遍歷來
找到結果。複雜度為o(n^2).
 1     public int[] twoSum(int[] nums, int target) {
 2         int [] result=new int [2];
 3         for(int i=0;i<nums.length;i++){
 4             for(int j=i+1;j<nums.length;j++){
 5                 if((nums[i]+nums[j])==target){  //遍曆數組,找到滿足的兩個數的下標保存在數組中
 6                     result[0]= nums[i];
 7                     result[1]= nums[j];
 8                 }
 9             }
10         }
11         if(result[0]==result[1]&&result[0]==0){   //這一步很多人不會註意,要判斷原來初始化的數組中的數是否滿足都不為0的要求
12             return null;
13         }else{
14             return result;
15         }
16         
17     }
其實這道題是一年前寫的了,當時也就是為了通過而通過,所以沒管複雜度的問題,其實這不是一個好習慣,今天第一次寫博客又想了下,找到了更好的方法,利用
hashmap可以實現o(n):
 1     public static int[] twosum(int[] num,int target){
 2         HashMap<Integer,Integer> map = new HashMap<>();  //構建hashmap
 3         for (int i = 0;i<num.length;i++){
 4             if (map.containsKey(target-num[i])){   //判斷當前map中有木有與num[i]和為target的鍵,如果有則找到這對鍵值,
 5                  return new int[]{map.get(target-num[i]),i+1};  // 和當前下標組成結果
 6             }else {
 7                 map.put(num[i],i);
 8             }
 9         }
10         return null;
11     }

  那麼現在就算是完成這道題了吧,發現寫博客真的不是一件那麼簡單的事,希望能堅持下來吧,最後來一張我gakki的美照紀念一下

  

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 插入排序Python實現 插入排序PHP實現 插入排序時間複雜度分析 插入排序演算法的時間複雜度為O(n2),但是插入排序法比冒泡和選擇排序的性能更好。 ...
  • 函數也是對象 要理解Python裝飾器,首先要明白在Python中,函數也是一種對象,因此可以把定義函數時的函數名看作是函數對象的一個引用。既然是引用,因此可以將函數賦值給一個變數,也可以把函數作為一個參數傳遞或返回。同時,函數體中也可以再定義函數。 裝飾器本質 可以通過編寫一個純函數的例子來還原裝 ...
  • 直接用StringBuilder,它的append方法方便快速構建字元串。 StringBuilder sb1=new StringBuilder(); for(int i=0;i<1024*1024*10;i++){ sb1.append('a'+""); } 取消息時 String str=sb ...
  • 學完Requests庫與Beautifulsoup庫我們今天來實戰一波,爬取網頁圖片。依照現在所學只能爬取圖片在html頁面的而不能爬取由JavaScript生成的圖。所以我找了這個網站http://www.ivsky.com 網站裡面有很多的圖集,我們就找你的名字這個圖集來爬取 http://ww ...
  • Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in or... ...
  • 題目描述 對一個給定的自然數M,求出所有的連續的自然數段,這些連續的自然數段中的全部數之和為M。 例子:1998+1999+2000+2001+2002 = 10000,所以從1998到2002的一個自然數段為M=10000的一個解。 輸入輸出格式 輸入格式: 包含一個整數的單獨一行給出M的值(10 ...
  • 題目描述 輸入二個正整數x0,y0(2<=x0<100000,2<=y0<=1000000),求出滿足下列條件的P,Q的個數 條件: 1.P,Q是正整數 2.要求P,Q以x0為最大公約數,以y0為最小公倍數. 試求:滿足條件的所有可能的兩個正整數的個數. 輸入輸出格式 輸入格式: 二個正整數x0,y ...
  • 題目描述 科學家們在Samuel星球上的探險得到了豐富的能源儲備,這使得空間站中大型電腦“Samuel II”的長時間運算成為了可能。由於在去年一年的辛苦工作取得了不錯的成績,小聯被允許用“Samuel II”進行數學研究。 小聯最近在研究和約數有關的問題,他統計每個正數N的約數的個數,並以f(N ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...