leetcode java解の2数の和,時間複雑度O(n),時間3 ms
1337 ワード
タイトル:
整数配列numsを指定 ターゲット値targetと、その配列の中でターゲット値を見つけてください. ふたつ 整数を返し、配列の下付きを返します.
入力ごとに1つの答えしか対応しないと仮定できます.しかし、この配列の同じ要素を繰り返し利用することはできません.
例:
与えられたnums=[2,7,11,15],target=9
nums[0]+nums[1]=2+7=9なので[0,1]を返します
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/two-sum 著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
考え方:
元の配列をコピーして、位置、データのソート、前後にインデックスを設定し、前後と大きい場合は前後にインデックスを前に移動し、逆に前にインデックスを後に移動し、加算してターゲット値を得ると、その数値が元の配列の位置を検索します.
コード:
整数配列numsを指定 ターゲット値targetと、その配列の中でターゲット値を見つけてください. ふたつ 整数を返し、配列の下付きを返します.
入力ごとに1つの答えしか対応しないと仮定できます.しかし、この配列の同じ要素を繰り返し利用することはできません.
例:
与えられたnums=[2,7,11,15],target=9
nums[0]+nums[1]=2+7=9なので[0,1]を返します
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/two-sum 著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
考え方:
元の配列をコピーして、位置、データのソート、前後にインデックスを設定し、前後と大きい場合は前後にインデックスを前に移動し、逆に前にインデックスを後に移動し、加算してターゲット値を得ると、その数値が元の配列の位置を検索します.
コード:
import java.util.Arrays;
import java.util.Scanner;
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] result=new int[2];
int[] pos=new int[nums.length];
for(int i=0;itarget){ //
i--;
}
if(nums[i]+nums[j]=0;i--){
if(arr[i]==target){
return i;
}
}
return -1;
}
public static void main(String[] args) {
int [] nums={3,2,3};
int target =6;
Solution solu=new Solution();
for(int i:solu.twoSum(nums, target)){
System.out.println(i);
}
}
}