薛翰林 2024-04-29 15:57 采纳率: 66.7%
浏览 1

关于#c++#的问题,请各位专家解答!

有一题不会,请各位专家解答!
有一题不会,请各位专家解答!
有一题不会,请各位专家解答!

img

  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-04-29 15:57
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题描述: 给定一个整数数组nums和一个目标值target,在该数组中找出和为目标值的那两个整数,并返回它们的数组下标,假设每种输入只会对应一个答案,且同样的元素不能被重复利用。 示例: 给定nums = [2,7,11,15],target = 9 因为nums [ 0 ] + nums [ 1 ] = 2 + 7 = 9, 返回[ 0,1 ] 。 回答: 解题思路: 利用哈希表的思想,存储遍历的元素和它对应下标的映射关系,对于每一个遍历到的元素,我们都首先查询哈希表中是否存在满足目标和的另一个元素,如果存在,则直接返回两个元素的下标即可;如果不存在,则将当前元素和它的下标存入哈希表中,继续往下遍历数组。 代码实现: Python class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hashmap = {}
        for i, num in enumerate(nums):
            if target - num in hashmap:
                return [hashmap[target - num], i]
            hashmap[num] = i
    

    Java class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> hashmap = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int complement = target - nums[i]; if (hashmap.containsKey(complement)) { return new int[] {hashmap.get(complement), i}; } hashmap.put(nums[i], i); } throw new IllegalArgumentException("No two sum solution"); } } C++ class Solution { public: vector twoSum(vector& nums, int target) { unordered_map<int, int> hashmap; for (int i = 0; i < nums.size(); i++) { int complement = target - nums[i]; if (hashmap.count(complement)) { return vector{hashmap[complement], i}; } hashmap[nums[i]] = i; } throw invalid_argument("No two sum solution"); } }; 时间复杂度:$O(n)$

    评论

报告相同问题?

问题事件

  • 创建了问题 4月29日

悬赏问题

  • ¥15 出现报错Debug Assertion Failed,如何解决?
  • ¥50 mcf中怎么实现导入的图片变成透明
  • ¥15 ruoyi-flowable流程设计配置的表单时,级联选择如何配置
  • ¥20 金属玻璃的剪切局部化程度怎么用ovito表示出来
  • ¥15 自定义控件在中文模式下不能输入数字
  • ¥15 xgboost建模输出结果由三分类变成四分类
  • ¥15 Windows X86 远线程注入问题解惑
  • ¥15 Vs2022安装时黑框闪退无反应
  • ¥15 嵌入式设备网口down后再up时不能link?
  • ¥15 关于区块链和边缘计算