leetcode (1. Two Sum)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lhq186/article/details/80531540

顺便复习了一下数组知识

Java初始化数组的方式有三种:
方式一:
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]);
		
	}
	
这样就可以把返回的数组里的两个数都打印出来了








猜你喜欢

转载自blog.csdn.net/lhq186/article/details/80531540