A11:两数之和

给一个整数数组,找到两个数使得他们的和等于一个给定的数 target

你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。

注意事项

你可以假设只有一组答案。

样例

给出 numbers = [2, 7, 11, 15], target = 9, 返回 [1, 2].

 1 import java.util.Arrays;
 2
 3 /**
 4  * Created by Tutotu on 2017/2/26.
 5  * <p>
 6  * Realname:yangmingzhu
 7  * <p>
 8  * Tel:18511400217
 9  * <p>
10  * Email:[email protected]
11  */
12
13 public class Solution11 {
14     /*
15     * @param numbers : An array of Integer
16     * @param target : target = numbers[index1] + numbers[index2]
17     * @return : [index1 + 1, index2 + 1] (index1 < index2)
18     */
19     public int[] twoSum(int[] numbers, int target) {
20         // write your code here
21         int[] temp = Arrays.copyOf(numbers,numbers.length);
22         int heigh = 0;
23         int low = 0;
24         int[] location = new int[2];
25         int i=0;
26         Arrays.sort(temp);
27         heigh = temp.length-1;
28         while(low < heigh && (temp[low] + temp[heigh] != target)){
29             if(temp[low] + temp[heigh] < target){
30                 low++;
31             }
32             if(temp[low] + temp[heigh] > target){
33                 heigh--;
34             }
35         }
36         System.out.print(low + "" + heigh) ;
37
38
39             while(i<numbers.length && numbers[i] != temp[low]){
40                 i++;
41             }
42             location[0] = i+1;
43             i = numbers.length-1;
44             while(i>0 && numbers[i] != temp[heigh]){
45                 i--;
46             }
47             location[1] = i+1;
48         Arrays.sort(location);
49         return location;
50     }
51
52
53     public static void print(int[] paramter){
54         for(int i=0; i<paramter.length; i++)
55             System.out.print(paramter[i]);
56     }
57     public static void main(String[] args){
58         int[] a = new int[]{0,4,3,0};
59         print(new Solution11().twoSum(a,-1));
60     }
61 }
时间: 2024-10-10 16:15:22

A11:两数之和的相关文章

给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X

题目:给定数组A,大小为n,现给定数X,判断A中是否存在两数之和等于X 思路一: 1,先采用归并排序对这个数组排序, 2,然后寻找相邻<k,i>的两数之和sum,找到恰好sum>x的位置,如果sum=x则返回true, 3,找到位置后,保持i不变,从k处向前遍历,直到找到A[k]+A[i]等于x,并返回TRUE,如果找不到,则返回false. 论证步骤3:当前找到的位置恰好A[k]+A[i]>x,且前一位置的sum<x: 所以A[i]前面的数(不包括A[i])无论取哪两个数都

JavaScript-3.1--获取用户的输入,输出用户输入的两数之和---ShinePans

提示用户输入两个数,然后输出用户输入的两数之和 第一次输入 ,输入处为空 第二个输入,输入处为默认27  (这里强调语句的使用) <html> <head> <meta http-equiv="content-type" content="text/html;charset=GB2312"/> <title> 3.1 让用户输入两个数字,然后输出相加的结果 </title> </head> &l

leetcode——Two Sum 两数之和(AC)

Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that

[LeetCode] Two Sum IV - Input is a BST 两数之和之四 - 输入是二叉搜索树

Given a Binary Search Tree and a target number, return true if there exist two elements in the BST such that their sum is equal to the given target. Example 1: Input: 5 / 3 6 / \ 2 4 7 Target = 9 Output: True Example 2: Input: 5 / 3 6 / \ 2 4 7 Targe

编程题:求两数之和

#include<stdio.h>       /*包含输入输出头文件*/ main()                            /*定义主函数*/ {  int a,b,sum;                /*定义整数变量a.b.sum*/ a=123;                        /*给a赋值*/ b=456;                        /*给b赋值*/ sum=a+b;                  /*令sum=a+b*/ p

LeetCode 167. Two Sum II - Input array is sorted (两数之和之二 - 输入的是有序数组)

Given an array of integers that is already sorted in ascending order, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, where index1 m

找出数组中两数之和为指定值的所有整数对

一,问题描述 给定一个整型数组(数组中的元素可重复),以及一个指定的值.打印出数组中两数之和为指定值的 所有整数对 二,算法分析 一共有两种方法来求解.方法一借助排序,方法二采用HashSet 方法一: 先将整型数组排序,排序之后定义两个指针left和right.left指向已排序数组中的第一个元素,right指向已排序数组中的最后一个元素 将 arr[left]+arr[right]与 给定的元素比较,若前者大,right--:若前者小,left++:若相等,则找到了一对整数之和为指定值的元素

算法练习:两数之和

题目:给定一个整型数组,是否能找出两个数使其和为指定的某个值?注:整型数组中不存在相同的数. 一.解题方法 1.暴力破解法(时间复杂度O(n^2) ) 这是最容易想到的一种方法,即使用两层循环,从数组里取出一个数,然后在此数之后部分找出另外一个数,计算两数之和,判断是否等于指定值.如下: //直观的办法,使用两个循环 bool IsExistSumOfTwoNum( int nArray[], int nCount, int nSum ) { bool bRet = false; for ( i

【LeetCode】 两数之和 twoSum

两数之和 (简单) 题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数: 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 例如: 给定 nums = [2,7,11,15] ,target = 9 因为 nums[0] + nums[1] = 9: 因此返回 [0,1]: v1.0代码如下: 正数.0或重复值通过测试: 异常用例: [-1, -2, -3, -4, -5] -8; 输出 [] /** * @param {number[]} nums * @par