leetcode第一題java解答——二数の和two sum
8502 ワード
整数配列numsとターゲット値targetを指定します.この配列でターゲット値の2つの整数を見つけて、その配列の下付きを返します.
入力ごとに1つの答えしか対応しないと仮定できます.しかし、この配列の同じ要素を繰り返し利用することはできません.
例:暴力法 hashmapを利用して を解決する.
入力ごとに1つの答えしか対応しないと仮定できます.しかし、この配列の同じ要素を繰り返し利用することはできません.
例:
nums = [2, 7, 11, 15], target = 9
nums[0] + nums[1] = 2 + 7 = 9
[0, 1]
class Solution {
public int[] twoSum(int[] nums, int target) {
int res[]=new int[2];
for(int i=0;i<nums.length-1;i++)
for(int j=i+1;j<nums.length;j++)
{
if(nums[i]==target-nums[j])
{
res[0]=i;
res[1]=j;
}
}
return res;
}
}
class Solution
{
public int[] twoSum(int[] nums, int target)
{
HashMap<Integer, Integer> map = new HashMap<>();
int res[]=new int[2];
for (int i = 0; i < nums.length; i++)
{
map.put(nums[i], i);
}
for (int i = 0; i < nums.length; i++)
{
int temp = target - nums[i];
if (map.containsKey(temp) && map.get(temp) != i) // hashmap temp,
{
res[0]=i;res[1]=map.get(temp);
return res;
}
}
return res;
}
}