01 two sum

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        map<int,int>hash;
        build(nums,hash);
        int index2=0;
        vector<int>result;
        for(int i=0;i!=nums.size();i++){
            index2=target-nums[i];
            if(hash.find(index2)!=hash.end()){
                if(i+1<hash[index2]){
                result.push_back(i+1);
                result.push_back(hash[index2]);
                return result;
                }
            }
        }

    }
    void build(vector<int>nums,map<int,int>&hash){
        for(int i=0;i!=nums.size();i++)
        hash[nums[i]]=i+1;
    }
};

用map实现hash

开始的时候比较蛋疼,它要返回位置。

于是在map里记录了位置,解决。

时间: 2024-12-18 22:12:55

01 two sum的相关文章

Leetcode 01 Two Sum

Given an array of integers, find two numbers such that they add up to a specific target number. The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that

记一次ORACLE的UNDO表空间爆满分析过程

这篇文章是记录一次ORACLE数据库UNDO表空间爆满的分析过程,主要整理.梳理了同事分析的思路.具体过程如下所示: 早上收到一数据库服务器的UNDO表空间的告警邮件,最早一封是7:55发出的(监控作业是15分钟一次),从告警邮件分析,好像是UNDO表空间突然一下子被耗尽了. DB Tablespace Allocated Free Used % Free % Used 192.168.xxx.xxx:1521 UNDOTBS1 16384 190.25 16193.75 1.16 99 使用一

又一版 A+B

又一版 A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13960    Accepted Submission(s): 5315 Problem Description 输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数. Input 输入格式:测试输入包含若

HDU 4923

题目大意: 给出一串序列Ai{0,1},求一个序列Bi[0,1](Bi<Bi+1),使得sigama(Ai-Bi)^2最小 思路: 若B相同,则取A的平均数可使方差最小 若B有序,   若A==00..011..1序列 则 B最优取法为0序列中取0,1序列中取1,满足B1<B2,最优,B1,B2取值互不影响,不考虑   若A==11..100..0序列 则 B为其平均数,因为最优是B在1序列中取1,0序列中取0,由于B1<B2,故只有当B1=B2时,可使其最优,解得最小为 1的个数sum

离线版-端点检测代码重写

根据对双门限的理解和修改,重写了一个离线版端点检测. function [st,en]=VAD(x, fs) x=double(x); x=x/max(abs(x)); framelen= floor(fs*40/1000);% frameinc= floor(fs*10/1000);% y=enframe(x,framelen,frameinc); %计算短时间能量 amp=sum(abs(y),2); %开始端点检测 tmp1=enframe(x(1:length(x)-1),framele

如何正确显示和比较浮点数

#include<iostream>using namespace std;int main(){ float sum=0.0; for(int i=0;i<10;i++) {  sum=sum+0.01; }  cout<<sum<<endl; if(sum==0.1) {  cout<<"相等"<<endl; } else {  cout<<"不相等"<<endl; } r

51nod-1661 1661 黑板上的游戏(组合游戏)

题目链接: 1661 黑板上的游戏 Alice和Bob在黑板上玩一个游戏,黑板上写了n个正整数a1, a2, ..., an,游戏的规则是这样的:1. Alice占有先手主动权.2. 每个人可以选取一个大于1的数字擦去,并写上一个更小的数字,数字必须是整数,然后由对方进行下一次操作.3. 如果擦去的数字是 x (x > 1) ,则写上的数字不能比 x/k 小,但是要比 x 小.这里的除法为有理数除法.4. 不可以擦去任何一个数字 1 ,如果当前无法找到一个数字进行操作,则当前方输.假设Alice

调优过程

性能调优 1 百胜表规范 USE ERP_DW GO /* 功能说明: 创建[区域]维度表 修改说明: Create by LY on 2011-09-07 */ IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE id = OBJECT_ID('Dim_Area') AND type = 'U') BEGIN DROP TABLE Dim_Area END GO CREATE TABLE [dbo].[Dim_Area] ( AreaCode VARCHAR(2

Linux性能监控

Linux性能监控的目的是找到系统的瓶颈,并且调节系统来设法消除这些瓶颈.我们在监控性能的时候重点在于监视一下子系统: 1.CPU 2.MEMORY 3.IO 4.NETWORK 但这些系统都是彼此依赖,不能单独只看其中一个.当一个系统负载过重时往往会引起其它子系统的问题,比如说:       ->大量的读入内存的IO请求(page-in IO)会用完内存队列:        ->大量的网络流量会造成CPU的过载:        ->CPU的高使用率可能正在处理空闲内存队列: