和为s的两个数字
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
示例:
1 2
| 输入:nums = [2,7,11,15], target = 9 输出:[2,7] 或者 [7,2]
|
问题解法
思路一
两个for循环。
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13
| class Solution { int i,j; public int[] twoSum(int[] nums, int target) { for(i=0;i<nums.length;i++){ for(j=i;j<nums.length;j++){ if(nums[i]+nums[j]==target) return new int[] {nums[i],nums[j]}; } } return new int[] {nums[i],nums[j]};
} }
|
思路二
一次遍历。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class Solution{ public int[] twoSum(int[] nums,int target){ int i=0,j=nums.length-1; while(i<j){ if(nums[i]+nums[j]<target){ i++; }else if(nums[i]+nums[j]>target){ j--; }else{ return new int[] {nums[i],nums[j]}; } } return new int[] {nums[i],nums[j]}; } }
|