標籤:main ret 技術分享 bool .net gif play arc 數組
刷題背景
擔心找不到工作。
看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
leetcode two_sum (easy) /java