在該題中 很容易想到用暴力法來解決
直接進行n^2次尋找
此時 時間複雜度很高 而要降低時間複雜度 即減少查詢次數
可以用hashmap 儲存num[i] i
降低了尋找可能存在的對應數字的次數
mapmap = new hashmap<>();
for (int i = 0; i < nums.length; i++)
for (int i = 0; i < nums.length; i++) ;
}}throw new illegalargumentexception("no two sum solution");
我專門試了一下。程式肯定是針對大資料量才能看出差別,我就分別試了陣列長度為一萬、十萬、百萬的陣列,並且查詢次數保證最大。在一萬的情況下,暴力破解法差不多要15-30毫秒,而hash表則是0-15毫秒;在十萬的情況下,暴力破解法是1500-1700毫秒,而hash表則是15-40毫秒;百萬級別的,hash錶用了500-1500毫秒不等,但暴力破解法我就執行了一次,152130毫秒。也去專門去查了hashmap.containskey()的時間複雜度,使用指標指向陣列引用,時間複雜度為o(1),未命中時,才回去遍歷紅黑樹,時間複雜度為o(n),有興趣的可以取看看 這篇帖子 力扣1 兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9...
力扣 1 兩數之和
方法一 暴力遍歷 時間複雜度o n 2 執行超時 for i in range len nums for j in range i 1,len nums res nums i nums j if res target return i,j 方法二 時間複雜度o n for i in range le...
力扣1 兩數之和
給定乙個整數陣列nums和乙個目標值target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所...