leetcode two_sum (easy) /java

刷题背景

担心找不到工作。

看think in java略枯燥,传智播客的视频太浅显。

于是刷题练习算法和java。

废话少说。

题:

java菜鸟一枚,用自己的编译器便于检查语法错误。

所以首先写了一个main函数,用于测试。

 1 public static void main(String[] args)
 2     {
 3         Scanner input=new Scanner(System.in);
 4         String s=input.nextLine();
 5         String[] s1=s.split(",");
 6         int len=s1.length;
 7         int[] nums=new int[len];
 8         int i=0;
 9         for(String str:s1)
10             System.out.print(str+" ");
11         System.out.println('\n');
12         for(i=0;i<s1.length;i++)
13         {
14             Integer it=Integer.valueOf(s1[i]);
15             int temp=it.intValue();
16             nums[i]=temp;
17         }
18         for(i=0;i<len;i++)
19             System.out.print(nums[i]+" ");
20         System.out.println('\n');
21         int target=input.nextInt();
22         System.out.println(target);
23 
24         int[] res=new int[2];
25         res=twoSum(nums,target);
26         System.out.print(res[0]+"-"+res[1]);
27     }
View Code

此处提及:java和c++的一点区别,c++不能直接返回一个数组,只能返回数组的指针,使得控制数组的生命周期变得困难,并且容易导致内存泄露。在Java中,直接返回一个数组,无需为它负责,使用完后,垃圾回收器会清理。(来自think in java)

第一个问题,如何读入带逗号的数组?

参考http://blog.csdn.net/DeMonliuhui/article/details/70157651

第二个问题,如何转为int数组传入函数?

参考http://www.blogjava.net/ljc-java/archive/2011/02/28/345344.html

 

关于功能函数。两层for循环遍历。因要求一个元素不能重复使用故添加  i!=j  限制。

 1 public static int[] twoSum(int[] nums, int target) {
 2         int[] r=new int[2];
 3         int i=0,j=0;
 4         boolean flag=false;
 5         for(i=0;i<nums.length;i++)
 6         {
 7             for(j=0;j<nums.length;j++)
 8             {
 9                 if(nums[i]+nums[j]==target&&i!=j)
10                 {
11                     r[0]=i;
12                     r[1]=j;
13                     flag=true;
14                     break;
15                 }
16             }
17             if(flag)
18                 break;
19         }
20 
21         return r;
22     }
View Code

 

posted @ 2017-05-05 16:17  天气晚来秋  阅读(93)  评论(0编辑  收藏  举报