1. 程式人生 > >LeetCode-兩數之和 II

LeetCode-兩數之和 II

給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。

函式應該返回這兩個下標值index1 和 index2,其中 index1 必須小於 index2

說明:

  • 返回的下標值(index1 和 index2)不是從零開始的。
  • 你可以假設每個輸入只對應唯一的答案,而且你不可以重複使用相同的元素。

示例:

輸入: numbers = [2, 7, 11, 15], target = 9
輸出: [1,2]

解釋: 2 與 7 之和等於目標數 9 。因此 index1 = 1, index2 = 2 。

思路:

1.這道題其實是很簡單了,可以利用map進行儲存,然後遍歷查詢有無相加為target的元素。

2.改進方法:因為已經說明是升序了,所以其實可以把指標從左和從右向中間靠攏找。

class Solution {
	public int[] twoSum(int[] numbers, int target) 
	{
		int index[] = new int[2];
		Map map = new HashMap<Integer, Integer>();
		int length = numbers.length;

		for (int i = 0; i < length; ++i) 
		{
			map.put(numbers[i], i);
		}

		for (int i = 0; i < length; ++i) 
		{
            int k = target -numbers[i];
            if(map.containsKey(k))
            {
            	k = (int)map.get(k);
            	if(k==i)
            	{
            		continue;
            	}
            	
            	index[0] = i+1;
            	index[1]=k+1;
            	break;
            }
	 	}

		return index;
	}
}

相關推薦

leetcode-之和II-C++

給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值index1 和 index2,其中 index1 必須小於 index2。說明:返回的下標值(inde

LeetCode-之和 II

給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值index1 和 index2,其中 index1 必須小於 index2。說明:返回的下標值(inde

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

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

Leetcode 167. 之和 II - 輸入有序數組 By Python

目標 .cn 一個 bject strong 輸入 {} 不可 tar 給定一個已按照升序排列 的有序數組,找到兩個數使得它們相加之和等於目標數。 函數應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。 說明: 返回的下標值

LeetCode演算法題167:之和 II - 輸入有序陣列解析

給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。 函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。 說明: 返回的下標值(index1 和 index2)不是從零開始的。 你可以假設每個輸入只對應唯一的答案,而且

Leetcode 167. 之和 II - 輸入有序陣列 Java&Python

給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。 函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。 說明: 返回的下標值(index1 和 index2)不是從零開始的。

領釦(LeetCode之和II - 輸入有序陣列 個人題解

給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。 函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。 說明: 返回的下標值(index1 和 index2)不是從零開始的。 你

LeetCode-167. 之和 II - 輸入有序陣列

題目 給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。 函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。 說明: 返回的下標值(index1 和 index2)不是從零開始的。 你可以假設每個

Leetcode刷題 167. 之和 II

給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。 函式應該返回這兩個下標值index1 和 index2,其中 index1 必須小於 index2。 說明: 返回的下標值(index1 和 index2)不是從零開始的。 你可以假設每個輸入

LeetCode演算法題167:之和 II

給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。 函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。 說明: 返回的下標值(index1 和 index2)不是從零開始的。 你可以假設

Leetcode 167:之和 II

給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。 函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。 說明: 返回的下標值(index1 和 index2)不是從零開始的。 你

leetcode 167. 之和 II - 輸入有序數組(Two Sum II - Input array is sorted)

else get () 返回 div 目標 href 有序數組 twosum 目錄 題目描述: 示例: 解法: 題目描述: 給定一個已按照 升序排列 的有序數

167 Two Sum II - Input array is sorted 之和 II - 輸入有序數組

數組 != 解決 升序 desc 一個 輸入 pub cpp 給定一個已按照升序排列 的有序數組,找到兩個數使得它們相加之和等於目標數。函數應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。請註意,返回的下標值(index1

[leetcode]之和

描述 () 另一個 -s nbsp get list 示例 class 題目描述: 給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。 示例: 給定 nums = [2, 7, 11, 15], ta

167. 之和 II - 輸入有序數組

給定 ont 相加 pla number pan 元素 return [] Given an array of integers that is already sorted in ascending order, find two numbers such that th

LeetCode之和(Python)

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

LeetCode_167. 之和 II - 輸入有序陣列

因為前提條件是升序 加上是兩個數 可以考慮雙索引數進行左右移動 public int[] twoSum(int[] numbers, int target) { // 設定雙向索引數 int left = 0, right = numbers.length

LeetCode:之和

https://leetcode-cn.com/problems/two-sum/description/ 給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11

【JS】之和 II - 輸入有序陣列 #陣列 #雙指標 #二分查詢

給定一個已按照升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。 函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。 說明: 返回的下標值(index1 和 index2)不是從零開始的。 你可以假設每個輸入只對應唯一的答案,

Leetcode 之和(c++)

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