• LeetCode 1. Two Sum


    Given an array of integers, return indices of the two numbers such that they add up to a specific target.

    You may assume that each input would have exactly one solution, and you may not use the same element twice.

    Example:

    Given nums = [2, 7, 11, 15], target = 9,
    
    Because nums[0] + nums[1] = 2 + 7 = 9,
    return [0, 1].

    先遍历一遍数组,建立hash表,再遍历一遍数组,找出下标

    c++代码:
     1 class Solution {
     2 public:
     3     vector<int> twoSum(vector<int>& nums, int target) {
     4         unordered_map<int, int> m;
     5         vector<int> res;
     6         for (int i = 0; i < nums.size(); ++i) {
     7             m[nums[i]] = i;
     8         }
     9         for (int i = 0; i < nums.size(); ++i) {
    10             int t = target - nums[i];
    11             if (m.count(t) && m[t] != i) {
    12                 res.push_back(i);
    13                 res.push_back(m[t]);
    14                 break;
    15             }
    16         }
    17         return res;
    18     }
    19 };

    其实第一遍遍历数组的时候就可以判断了,这样可以优化代码为

    c++代码

     1 class Solution {
     2 public:
     3     vector<int> twoSum(vector<int>& nums, int target) {
     4         unordered_map<int, int> m;
     5         for(int i = 0; i < nums.size(); ++ i)
     6         {
     7             int n = target - nums[i];
     8             if(m.count(n))
     9                 return {i, m[n]};
    10             m[nums[i]] = i;
    11         }
    12         return {};
    13     }
    14 };

      

  • 相关阅读:
    研究下线程投递
    IOCP笔记
    线程同步之mutex和Semaphore
    线程同步之mutex和event区别
    MyStack
    unix环境高级编程 读书笔记
    binary search tree study
    技术博客地址搜集
    select收数据
    奇怪的问题
  • 原文地址:https://www.cnblogs.com/xjtuchenpeng/p/7723904.html
Copyright © 2020-2023  润新知