首页 > 代码库 > leetcode two_sum (easy) /java
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 }
此处提及: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 }
leetcode two_sum (easy) /java
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。