递增数组中和为s的两个数字

思路:
创建两个指针,初始位置分别指向数组的头部和尾部,把对应位置的数字求和,比较和s的大小,如果相等,即为所求,如果大于s,则把尾指针向前移动,如果小于s,则把头指针向前移,知道找到和为s的两个数字的数字为止。

public class Solution {
    public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
        ArrayList<Integer> list=new ArrayList<>();
        if(array==null||array.length<2)
             return list;
        int head=0;
        int tail=array.length-1;
        while(head<tail){
            int s=array[head]+array[tail];
            if(sum==s){
                 list.add(array[head]);
                 list.add(array[tail]);
                break;
            }else if(s>sum){
                tail--;
            }else
                head++;
        }
            
         return list;
        
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,473评论 3 44
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,905评论 0 38
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,769评论 0 33
  • 初夏的夜,波涛汹涌的月光漫过窗棂把我淹没,无助挣扎苟延残喘的恍惚间,自己那曾经的激情燃烧岁月电影般在眼前回放。...
    天涯孤旅背包客阅读 401评论 2 4
  • 近期看别人的文章,有很多感悟,觉得不吐不快,所以信马由缰写的,全是大实话,请不喜欢的朋友不要拍砖哈。 有...
    大小豆芽菜阅读 308评论 0 0