力扣 1 兩數之和

2021-10-01 21:28:36 字數 640 閱讀 8610

在該題中 很容易想到用暴力法來解決 

直接進行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 所...