LeetCode·[Two Sum 两数之和]
2019-02-24 本文已影响0人
碧鬼鸠
LeetCode·[Two Sum 两数之和]
题目:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
分析
这里需要用到数组的知识,我们先看下数组都有哪些常用方法。
数组是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来唯一确定数组中的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。
这里,我们只需要用到一维数组。
声明数组
声明一维数组的语法格式为:
数据类型数组名[]; //声明数组
或者:
数据类型[]数组名; //声明数组
分配空间
声明了数组,只是得到了一个存放数组的变量,并没有为数组元素分配内存空间,不能使用。因此要为数组分配内存空间,这样数组的每一个元素才有一个空间进行存储。
在 Java 中可以使用 new 关键字来给数组分配空间。分配空间的语法格式如下:
数组名=new 数据类型[数组长度]; //分配空间
当然也可以在声明数组时就给它分配空间,语法格式如下:
数据类型[]数组名=new 数据类型[数组长度];
获取数组元素
int[] number={1,2,3,5,8};
System.out.println("获取第一个元素:"+number[0]);
System.out.println("获取最后一个元素:"+number[number.length-1]);
遍历数组
int[] number={1,2,3,5,8};
for (int i=0;i<number.length;i++)
{
System.out.println("第"+(i+1)+"个元素的值是:"+number[i]);
}
或者
for(int val:number){
System.out.print("元素的值依次是:"+val+"\t");
}
解法:
class Solution {
public int[] twoSum(int[] nums, int target) {
int len = nums.length;
for(int i=0;i<len;i++){
int m = target-nums[i];
for(int j=i+1;j<len;j++){
if(nums[j]==m){
int a[]={i,j};
return a;
}
}
}
return null;
}
}