有序数组找到两个数等于目标值

水深无声 2022-10-29 07:48 272阅读 0赞
  1. /** * 输入一个已经按照升序排列的有序数组nums和一个目标值target,找到两个数,使得他们的和=target,并返回这两个数的索引 * 左右指针 */
  2. public class Test6 {
  3. public static void main(String[] args) {
  4. int[] nums = new int[]{ 2,7,11,15};
  5. int target = 13;
  6. for (int i : calc(nums, target)) {
  7. System.out.println(i);
  8. }
  9. }
  10. static int[] calc(int[] nums, int target) {
  11. int left = 0;
  12. int right = nums.length - 1;
  13. while (left < right) {
  14. int rs = nums[left] + nums[right];
  15. if (rs == target) {
  16. return new int[]{ left, right};
  17. } else if (rs < target) {
  18. left++;
  19. } else {
  20. right--;
  21. }
  22. }
  23. return new int[]{ -1, -1};
  24. }
  25. }

发表评论

表情:
评论列表 (有 0 条评论,272人围观)

还没有评论,来说两句吧...

相关阅读

    相关 之和等于目标值

    题目: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数,将这两个数通过另一个数组返回。可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: