有序数组的 Two Sum

167 Two Sum II - Input array is sorted (Easy)

Leetcode / 力扣

Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2
Copy to clipboardErrorCopied

题目描述:在有序数组中找出两个数,使它们的和为 target。
使用双指针,一个指向较小的元素,一个指向较大的元素。指向较小元素的指针从左向右遍历,指向较大元素的指针从右向左遍历。

  • 如果两个指针指向的元素的和 sum == target,直接返回结果
  • 如果两个指针指向的元素的和 sum < target,移动较小元素的指针
  • 如果两个指针指向的元素的和 sum > target, 移动较大元素的指针
      public int[] twoSum(int[] numbers, int target) {
          if (numbers == null) return null;
          int i = 0, j = numbers.length - 1;
          while (i < j) {
              int sum = numbers[i] + numbers[j];
              if (sum == target) {
                  return new int[]{i + 1, j + 1};
              } else if (sum < target) {
                  i++;
              } else {
                  j--;
              }
          }
          return null;
      }
    

```

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利&nbsp;有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的&nbsp;真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
Java抽象带篮子:简历怎么写可以看看我发的帖子,你的第一个是实习经历吗?那怎么写的是你的第一个练手项目呢?简历写的怎么样直接投小厂面试一下就知道了
没有实习经历,还有机会进...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务