版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lhq186/article/details/80531540
顺便复习了一下数组知识
方式一:
int[] array={1,2,3};
方式二:
int[] array=new int[3];
方式三:
int[] array=new int[]{1,2,3};
注意方式二与方式三的差别,
方式二等号右边的中括号有数字(表示数组长度),
方式三等号右边的中括号无数字。
先研究最简单的暴力法,以后再去研究其他高效率办法
代码段:
暴力遍历法
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[j] == target - nums[i]) {
return new int[] { i, j };
}
}
}
throw new IllegalArgumentException("No two sum solution");
}
首先,int类型的函数要有return,这里就是 throw new IllegalArgumentException("No two sum solution");
其次,这里很有意思nums[j] == target - nums[i],因为如果写 target == num1 + num2;
很容易导致溢出的情况,如果 a+b>c =>a>c-b可以防止用➕溢出 (这是听了justjavac的讲座听来的)
然后 return new int[] { i, j }; return 的是一个新建的数组,就该用数组去承接他,
所以开始我写完整的程序main方法去测试时,就会出问题,后来才明白要用一个数组去承接他,java基础真是薄弱啊!
main方法
public static void main(String[] args) {
Twosum a = new Twosum();
int nums[] = {2,7,11,15};
int[] array=a.twoSum(nums, 18);
System.out.println(array[0]+" "+array[1]);
}
这样就可以把返回的数组里的两个数都打印出来了