题目:从一个数组中找出相加等于sum的两个数字的索引号。
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
Q:数组字符串 [2, 7, 11, 15] 进行切割时,第一个分出的字符串为空,找到匹配的字符,就把它前边的算作一个字符串,放入数组,后边的继续切割。
所以在取数字时,从索引为1的位置开始选取。
eg:
String input = [2, 7, 11, 15];
String[] strs = input.split("[\\W]+");
for(String s:strs){
sysout.println(":"+s);
}
——————控制台输出——————————
:
:2
:7
:11
:15
附上该题 Java 代码:
从网上借鉴到使用map的方法,源自(原网站被我关掉了… 等找到了贴过来)
public int[] twoSum(int[] nums, int target) {
int[] results = {-1,-1};
// 使用map,逐渐往map里面添加元素,判断当前循环的元素的补在map里面否。
HashMap<Integer, Integer> map = new HashMap<Integer,Integer>();
for(int i = 0;i<nums.length;i++){
if(map.containsKey(target-nums[i])){
results[1] = i;
results[0] = map.get(target-nums[i]);
return results;
}
map.put(nums[i], i);
}
return results;
}
傻瓜模式————————————
public int[] twoSum(int[] nums, int target) {
int[] results = {-1,-1};
for(int i = 0;i<nums.length;i++){
for(int j = i+1;j<nums.length;j++){
if(nums[i]+nums[j] == target){
results[0] = i;
results[1] = j;
j = nums.length;
i = nums.length;
}
}
}
return results;
}