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
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...