1. 程式人生 > >Leet code 第一題 兩數之和 JAVA python

Leet code 第一題 兩數之和 JAVA python

一開始用了兩個For 迴圈寫的,看了官方的解決方案發現複雜度太高,時間複雜度為O(N2)。然後發現用Hashmap更加簡單一點:JAVA:class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer,Integer> map=new HashMap<>();
        for (int i=0;i<nums.length;i++){
            int complement= target-nums[i];
            if(map.containsKey(complement)){
                return new int[] {map.get(complement),i};
            }
            map.put(nums[i], i);
        }
      throw new IllegalArgumentException("No two sum solution");
    }
}先是求target減去第i個數字還需要多少,然後如果它在map裡就返回它和i的下標如果不存在,就把它和下標存進map。
例:【2,9,11,15】target=13i=0; nums[i]=2; complement=13-2=11;不在;把2,0存進mapi=1;nums[i]=9;complement=13-9=4;map:2 不在;把9,1存進mapi=2;nums[i]=11;complement=13-11=2;map:2,9 在; 返回下標0,2。Python:python裡的字典就像java裡的HashMap,以鍵值對的方式存在並操作class Solution:
    def twoSum(self, nums, target):
        map={}
        r=[]
        for i in range(0,len(nums)):
            complement=target-nums[i]
           
            if complement in map:
                #print(complement)
                r.append(map[complement])
                r.append(i)
                return r
         
            else :
                map[nums[i]]=i哈哈哈 折騰了好久 不過總算是弄出來了犯了個小錯誤 把增加map字典寫成了map={nums[i]:i},所以每次map都在重新整理而不是新增一個蠢蠢的

相關推薦

Leet code 第一 之和 JAVA python

一開始用了兩個For 迴圈寫的,看了官方的解決方案發現複雜度太高,時間複雜度為O(N2)。然後發現用Hashmap更加簡單一點:JAVA:class Solution {    public int[] twoSum(int[] nums, int target) {    

leetcode第一之和python實現

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [

leetcode 第一 之和

1、暴力解法 兩個巢狀for迴圈可以解決(188ms) 2、利用map資料結構 用給出的矩陣構建map,只需要用兩個並列的for迴圈(12ms) class Solution { public:

【leetcode 簡單】第三十七 之和 II - 輸入有序數組

nbsp def art col else ber clas 不可 strong 給定一個已按照升序排列 的有序數組,找到兩個數使得它們相加之和等於目標數。 函數應該返回這兩個下標值index1 和 index2,其中 index1 必須小於 index2。 說明: 返

001. 之和(java)

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [

leetcode刷--之和(簡單)

一、序言   第一次刷leetcode的題,之前從來沒有刷題然後去面試的概念,直到臨近秋招,或許是秋招結束的時候才有這個意識,原來面試是需要刷題的,面試問的問題都是千篇一律的,只要刷夠了題就差不多了,當然你的基礎也要紮實,畢竟在技術面的時候很容易露餡的。   所以奉勸各位還未畢業,在大三或大二的師弟師妹早

LeetCode算法——之和(python)

type 目標 ado 兩個 term 分享圖片 blog process col 兩數之和: 給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。例如:給定 nums = [2, 7, 11, 15],

CCF2015.12 第一:數位之和 (java)

CCF2015.12 第一題:數位之和 (java) 問題描述   給定一個十進位制整數n,輸出n的各位數字之和。 輸入格式   輸入一個整數n。 輸出格式   輸出一個整數,表示答案。 樣例輸入 20151220 樣例輸出 13 public class ShuWeiZhiHe {

LeetCode-探索-初級-陣列-之和-java

兩數之和 給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的 兩個 整數。 你可以假設每種輸入只會對應一個答案。但是,你不能重複利用這個陣列中同樣的元素。 示例: 給定 nums = [2, 7,

leetcode 之和 java

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 +

leetcod刷---之和

吐槽 今天好冷哇哇哇,真的是凍死人了,今天看貓貓老睡在那裡,然後我過去就舔我的手和臉emmmm。 題目 兩數之和給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums

leetcode 第二 相加 java

class Solution {    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {        ListNode list=new ListNode(0);        ListNode current=list;        in

LeetCode:第1 之和 C語言實現

分析: 1.for()迴圈中,看到有些同學寫的是for(i = 0; i < numsSize; i++)  個人覺得應該有減1,自己推導一下就有結果的,因為題目要求不能重複 2.看到有些同學用break,本來想通過break來縮短執行時間(因為只要找到我們要的結果,就不必再向後

打卡LeetCode第一天——之和

題目:給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定nums=[2,7,11,15],target=9 因為nums=[0]+nums=[1]=2+7=9 所以返回  [0,

LeetCode之和Python

LeetCode 兩數之和(Python) 題目:給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0]

Leetcode 15. 三之和 Java & Python

給定一個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。 注意:答案中不可以包含重複的三元組。 例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -

練習記錄(1)——之和JAVAPython

【題號001】兩數之和 Two Sum 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例:   給定 nums = [2, 7, 11, 15], target = 9     因為 nums[0] + n

LeetCode第一之和

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [

Leetcode第一之和(3種語言)

Leetcode第一題:兩數之和 給定一個整數陣列 nums 和一個目標值 target,請你在該陣列中找出和為目標值的 兩個 整數。 你可以假設每種輸入只會對應一個答案。但是,你不能重複利用這個陣列中同樣的元素。 示例: 給定 nums = [2, 7, 11, 15], target

LeetCode第一之和C++實現

//方法一:暴力法 //遍歷每個元素 xx,並查詢是否存在一個值與 target−x 相等的目標元素。 vector<int> twoSum(vector<int>& nums, int target) { vector<int> ans; in