自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

力扣算法經(jīng)典第一題——兩數(shù)之和(Java兩種方式實現(xiàn))

開發(fā) 前端
給我們一個數(shù)組,然后一個目標(biāo)值。我們不用想要得到數(shù)組下標(biāo),肯定要進行便利數(shù)組,然后進行比較找出答案。

一、題目

難度:簡單

給定一個整數(shù)數(shù)組? nums 和一個整數(shù)目標(biāo)值? target,請你在該數(shù)組中找出 和為目標(biāo)值 target  的那 兩個 整數(shù),并返回它們的數(shù)組下標(biāo)。你可以假設(shè)每種輸入只會對應(yīng)一個答案。但是,數(shù)組中同一個元素在答案里不能重復(fù)出現(xiàn)。你可以按任意順序返回答案。?


二、示例

示例 1:

輸入:nums = [2,7,11,15], target = 9
輸出:[0,1]
解釋:因為 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

?

示例 2:

輸入:nums = [3,2,4], target = 6
輸出:[1,2]

?

示例 3:

輸入:nums = [3,3], target = 6
輸出:[0,1]

?

三、簡單分析

?簡單理解一下哈,力扣直接標(biāo)記出簡單,說實話,對于一個算法不太了解的人,確實不太明白。通過一些資料慢慢理解了。在這里分享給大家,主要是思路。

給我們一個數(shù)組,然后一個目標(biāo)值。我們不用想要得到數(shù)組下標(biāo),肯定要進行便利數(shù)組,然后進行比較找出答案。最簡單的就是兩個便利然后組合進行判斷是否符合目標(biāo)值?,當(dāng)然這樣的效率也是比較慢,隨著數(shù)組的越大,效率就會直線下降。這樣的時間復(fù)雜度為O(n^2)。就和冒泡排序一樣兩個for進行挨個比較!?

?

四、暴力便利

public static int[] twoSum1(int[] nums,int target) {
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] == target) {
return new int[]{i, j};
}
}
}
return null;
}
public static void main(String[] args) {
int nums[] = {2,4,6,7};
int target = 10;
int[] ints = twoSum1(nums, target);
for (int i = 0;i < ints.length; i++){
System.out.println(ints[i]);
}
}

五、進階HashMap實現(xiàn)

public int[] twoSum2(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();

for (int i = 0; i < nums.length; i++) {
int result = target - nums[i];
if (map.containsKey(result)) {
return new int[] { map.get(result), i };
}
map.put(nums[i], i);
}
return new int[]{};
}

public static void main(String[] args) {
int nums[] = {2,4,6,7};
int target = 6;
int[] ints = twoSum2(nums, target);
for (int i = 0;i < ints.length; i++){
System.out.println(ints[i]);
}
}

六、進階分析

利用HashMap的containsKey()?方法,哈希查找效率提升到O(n)?,遍歷數(shù)組 nums,i為當(dāng)前下標(biāo),每個值都判斷map中是否存在 target-nums[i]?的key值,每次都把沒找到的放進集合里,以例子來說:第一次便利2   ?6 - 2 = 4? ,判斷map里沒有4這個key?,我們把i的值2放進map里key為值,value為下標(biāo)。第二次便利4   ?6 - 4 = 2?,判斷map,發(fā)現(xiàn)key有2?,則直接返回結(jié)果作為key的map對應(yīng)的value也就是0?下標(biāo),第二個就是本次便利的i=4的下標(biāo)1依次放下進行繼續(xù)遍歷找到為止。

責(zé)任編輯:姜華 來源: 小王博客基地
相關(guān)推薦

2011-03-03 10:26:04

Pureftpd

2010-07-14 10:30:26

Perl多線程

2021-12-08 10:47:35

RabbitMQ 實現(xiàn)延遲

2022-06-08 15:12:34

前端前端截圖

2012-10-16 09:40:38

洗牌算法

2010-09-07 11:09:59

2010-09-28 15:12:27

Javascript

2009-06-15 15:02:48

Spring定時器

2015-10-09 09:51:29

Web API認(rèn)證

2011-04-02 09:48:38

深拷貝

2011-06-16 10:02:08

JAVA靜態(tài)載入

2009-06-25 13:43:00

Buffalo AJA

2010-02-02 14:32:32

Python線程編程

2010-10-21 16:24:18

sql server升

2021-05-27 10:57:01

TCP定時器網(wǎng)絡(luò)協(xié)議

2010-08-06 09:38:11

Flex讀取XML

2023-03-29 13:06:36

2010-04-20 15:32:20

主控負(fù)載均衡

2009-06-23 18:18:13

SpringHibernate

2023-05-31 19:10:31

點贊
收藏

51CTO技術(shù)棧公眾號