【剑指offer】75. 和为S的两个数字

题目链接

acwing

题目描述

输入一个数组和一个数字 s,在数组中查找两个数,使得它们的和正好是 s。

如果有多对数字的和等于 s,输出任意一对即可。

你可以认为每组输入中都至少含有一组满足条件的输出。

数据范围:数组长度 [1,1002]。

输入:[1,2,3,4] , sum=7
输出:[3,4]

题目分析

数组排序 + 双指针

代码实现

class Solution {
    public int[] findNumbersWithSum(int[] nums, int target) {
        int[] res = new int[2];
        Arrays.sort(nums);
        int left = 0, right = nums.length - 1;
        while(left < right){
            int sum = nums[left] + nums[right];
            if(sum == target){
                res[0] = nums[left];
                res[1] = nums[right];
                return res;
            }else if(sum > target){
                right --;
            }else{
                left ++;
            }
        }
        return res;
    }
}

拓展

其实也可以通过哈希表实现

拓展题目

两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] ==9 ,返回 [0, 1] 。

输入:nums = [3,2,4], target = 6
输出:[1,2]

输入:nums = [3,3], target = 6
输出:[0,1]

class Solution {
    // 返回的是数组下标
    public int[] twoSum(int[] nums, int target) {
        int[] res = new int[2];
        // key是nums中的值,value是下标
        Map<Integer, Integer> hashMap = new HashMap<>();
        for(int i = 0; i < nums.length; i ++){
            int need = target - nums[i];
            if(hashMap.containsKey(need)){
                res[0] = i;
                res[1] = hashMap.get(need);
                return res;
            }
            hashMap.put(nums[i], i);
        }
        return res;
    }
}

相关推荐

  1. offer75. S数字

    2024-03-28 06:04:03       44 阅读
  2. offer--s数字

    2024-03-28 06:04:03       34 阅读
  3. 双指针练习:s数字

    2024-03-28 06:04:03       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 06:04:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 06:04:03       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 06:04:03       82 阅读
  4. Python语言-面向对象

    2024-03-28 06:04:03       91 阅读

热门阅读

  1. 课时77:流程控制_until循环_until基础

    2024-03-28 06:04:03       44 阅读
  2. flutter boost 如何从native跳转到flutter页面

    2024-03-28 06:04:03       41 阅读
  3. Selenium 学习(0.22)——软件测试之小结

    2024-03-28 06:04:03       41 阅读
  4. 深入浅出(四)VTK库—3D可视化

    2024-03-28 06:04:03       40 阅读
  5. 边缘随机变量

    2024-03-28 06:04:03       41 阅读
  6. TCP面向字节流协议分析

    2024-03-28 06:04:03       40 阅读
  7. maya外部调用

    2024-03-28 06:04:03       44 阅读
  8. centos 安装 netstat

    2024-03-28 06:04:03       40 阅读
  9. ChatGPT指南:如何利用人工智能进行编程

    2024-03-28 06:04:03       44 阅读
  10. sonar扫描bug及对应修复

    2024-03-28 06:04:03       42 阅读
  11. 大模型的学习 LLaMa和ChatGLM,minichatgpt4

    2024-03-28 06:04:03       43 阅读