原題目鏈接:1. 兩數之和
題目描述:
給定一個整數陣列 nums 和一個整數目標值 target,請你在該陣列中找出 和為目標值 的那 兩個 整數,并回傳它們的陣列下標,
你可以假設每種輸入只會對應一個答案,但是,陣列中同一個元素不能使用兩遍,
你可以按任意順序回傳答案,
示例 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]
提示:
2 <= nums.length <= 103
-109 <= nums[i] <= 109
-109 <= target <= 109
只會存在一個有效答案
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/two-sum
著作權歸領扣網路所有,商業轉載請聯系官方授權,非商業轉載請注明出處,
做題思路
- 創建一個命名為temp,陣列長度為2的陣列,目的是為了保存符合條件的兩個下標
- 遍歷兩次nums陣列,也就是從nums陣列中從0下標開始不斷取出兩個元素
- 例如先取出0下標的元素,然后找個變數first保存0下標的元素
- 然后找個first與0下標后面取出的元素,兩個為一組,進行相加
4.1 如果一旦發現相加的和等于target,就把這兩個元素的下標分別保存到temp陣列,回傳這個temp陣列
4.2 如果遍歷完了之后,發現不存在和等于target,就回傳null
我們以nums = [2,7,11,15], target = 17為例子,進行自制影片演示
點擊這里在B站看影片演示喔
廢話不多說,直接上代碼,為了讓各位看官更能清晰理解,我的代碼寫得不精簡,我的代碼里加了大量的注釋,相信各位看官可以理解,如果我有些沒寫清楚或者寫錯的,可以評論區或者私信我喔
public int[] twoSum(int[] nums, int target) {
//創建一個臨時陣列,存放符合條件的元素的下標
int[] temp = new int[2];
//第一次遍歷nums陣列
for(int i = 0; i < nums.length; i++){
//依次取出陣列的元素
int first = nums[i];
//每取出一個元素,就遍歷一次nums陣列,注意這里是第二次遍歷nums陣列
for(int j = i + 1; j < nums.length; j++){ //i + 1是因為題目說了陣列中同一個元素不能使用兩遍,所以我從取出元素的后一個元素開始
//取出i下標后面的元素
int second = nums[j];
if((first + second) == target) { //如果相加等于和target
//分別存放下標到臨時陣列temp
temp[0] = i;
temp[1] = j;
return temp;
}
}
}
return null;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/250715.html
標籤:其他
上一篇:nginx網站服務如何配置防盜鏈
