zoukankan      html  css  js  c++  java
  • LeetCode-1-two-sum

    LeetCode-1-two-sum

    一、问题描述

      给定一个int类型的数组nums,和一个int类型的target。在数组nums中找到两个数,这两个数之和等于target,返回这两个数的下标。(可以假定只有一对这样的数)

    例子:

    nums = [2, 7, 11, 15], target = 9

    返回[0,1]

    二、问题解答

    1、暴力解法

      从nums的第一个数开始,使用该数和后面的每个数进行比较,知道找到和为target的数

    vector<int> twoSum(vector<int>& nums, int target) {
            vector<int> v;
    	for (int i = 0; i < nums.size(); i++)
    		for (int j = i; j < nums.size(); j++)
    			if (i != j && nums[i] + nums[j] == target) {
    				v.push_back(i);
    				v.push_back(j);
    			}
    	return v;
        }
    

    2、使用map,减少寻找时间

    vector<int> twoSum(vector<int>& nums, int target) {
    	vector<int> result;
    	map<int, int> hm;
    	for (int i = 0; i < nums.size(); i++) {
    		int temp = target - nums[i];
    		if (hm.find(temp) != hm.end()) {
    			result.push_back(hm[temp]);
    			result.push_back(i);
    			return result;
    		}
    		hm[nums[i]] = i;
    	}
    	return result;
    }
    

      

  • 相关阅读:
    eclips断点调试
    单位换算
    信息论与编码复习
    嵌入式学习笔记
    DAVINCI项目日志
    英语考试方法
    虚拟机安装Ubuntu的上网设置(有线网络和无线网络)
    重装系统必须备份的几种数据
    linux笔记
    word应用技巧
  • 原文地址:https://www.cnblogs.com/likaiming/p/8064274.html
Copyright © 2011-2022 走看看