题解 | 两数之和

两数之和

https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param numbers int整型一维数组
     * @param target int整型
     * @return int整型一维数组
     */
    public int[] twoSum (int[] numbers, int target) {
        int[] result = new int[]{-1, -1};
        int[] tmp = Arrays.copyOf(numbers, numbers.length);
        Arrays.sort(tmp);

        int first = -11;
        int second = -11;
        for (int i = 0, j = 1; i < tmp.length && j < tmp.length;) {
            if (tmp[i] + tmp[j] == target) {
                first = tmp[i];
                second = tmp[j];
                break;
            }

            if (j == tmp.length -1 || tmp[i] + tmp[j] < target && tmp[i] + tmp[j + 1] > target) {
                i ++;
                j = i + 1;
            } else {
                j ++;
            }

        }

        System.out.println(first + ":" + second);
        if (first == -11 || second == -11) {
            return result;
        }


        for (int i = 0; i < numbers.length; i++) {
            if (result[0] == -1 && first == numbers[i]) {
                result[0] = i + 1;
                continue;
            }

            if (result[1] == -1 && second == numbers[i]) {
                result[1] = i + 1;
            }
        }
        Arrays.sort(result);
        return result;
    }
}

全部评论

相关推荐

哞客37422655...:你猜为什么福利这么好还得一直追着你问
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务