leetcode two_sum (easy) /java
Posted 天气晚来秋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章
算法 Notes|LeetCode 26. 删除排序数组中的重复项 - easy