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 著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
 
考え方:
元の配列をコピーして、位置、データのソート、前後にインデックスを設定し、前後と大きい場合は前後にインデックスを前に移動し、逆に前にインデックスを後に移動し、加算してターゲット値を得ると、その数値が元の配列の位置を検索します.
 
コード:
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);
		}
	}
}