167. 两数之和 II - 输入有序数组

图片说明

class Solution {
   public int[] twoSum(int[] numbers, int target) {
        int flag[] = new int [2];
        int l = 0 ;
        int r = numbers.length-1;
        while(l<r) {
            if((numbers[l]+ numbers[r])<target) {
                l++;
            }
            else if((numbers[l]+numbers[r])>target) {
                r--;
            }
            else {
                flag[0] = l+1;
                flag[1] = r+1;
                break;
            }
        }
        return flag;
    }
}

还可用hash表

 public int[] twoSum(int[] numbers, int target) {
        int flag[] = new int [2];
        HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();
        for(int i = 0 ; i < numbers.length; i++) {
            if(hm.containsKey(target-numbers[i])) {
                flag[0] = hm.get(target-numbers[i])+1;
                flag[1] = i+1;
                break;
            }
            else{
                hm.put(numbers[i],i);
            }
        }
        return flag;
    }
}
全部评论

相关推荐

乐观的打工人前程似锦:怎么说呢🤔️,学历够,专业技能看起来也有那么回事,就是项目会不会差点?dji更喜欢较为复杂的工程落地的项目吧?如果有一些title的项目就更好了。有实习也是加分项,搞过神经网络应该也是加分项。进面应该可以,还是要看技术过硬
点赞 评论 收藏
分享
2024-12-21 18:48
西安邮电大学 C++
黑皮白袜臭脚体育生:按使用了什么技术解决了什么问题,优化了什么性能指标来写会更好另外宣传下自己的开源仿b站微服务项目,GitHub已经390star,牛客上有完整文档教程
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务