zoukankan      html  css  js  c++  java
  • 【LeetCode】001-Two Sum

    题意:给定一组Integers,找到其中两个数使其和等于给定的一个特定的数。返回两数的序号,保证有且仅有一组解。

    思路1

    O(N^2) 的做法,循环两次进行遍历,直接粗暴,但是TLE。

    尝试了一下利用<algorithm>中的find函数,还是TLE,所以这个find应该是O(N)的。

    思路2

    Hash_map,利用STL中的map函数,对于数组中的每一个数numbers[i],查看map中是否含有target-numbers[i]。但是需要考虑target是否为Numbers[i]的二倍,如果是的话,需要考察两个数的序号是否为同一个。

    思路3

    看了别人的代码才知道还有unordered_map这么一个东西,而且,unordered_map对于依据key来查询单独元素比map速度要快。提交之后发现map

    http://www.cplusplus.com/reference/unordered_map/unordered_map/

    代码如下:

    class Solution {
    public:
        vector<int> twoSum(vector<int> &numbers, int target) {
            vector<int> ans;
    		unordered_map<long long, int> m;
    		ans.clear();
    		m.clear();
    		
    		int n = numbers.size();
    		for(int i = 0; i < n; i++)
    			m[numbers[i]] = i+1;
    		for(int i = 0; i < n; i++)
    		{
    			long long t = target-numbers[i];
    			if(t == numbers[i] && m[t] != i+1 || t != numbers[i] && m[numbers[i]] != 0 && m[t] != 0)
    			{
    				ans.push_back(i+1);
    				ans.push_back(m[t]);
    				return ans;
    			}
    		}
        }
    };
    

      

  • 相关阅读:
    分布式session管理解决方案
    RabbitMQ知识汇总
    RabbitMQ之集群模式总结
    Flexbox参数详解
    CSS Lint
    javascript中的defer属性和async属性
    简介BFC
    GIT 牛刀小试 (第二发)
    GIT 牛刀小试 (第一发)
    如何让浏览器支持HTML5标签
  • 原文地址:https://www.cnblogs.com/kathyrine/p/4457957.html
Copyright © 2011-2022 走看看