1. Two Sum 使用unsorted_map或者vector的sort函数
来源:互联网 发布:冯大辉 范凯 知乎 编辑:程序博客网 时间:2024/06/06 13:30
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].
解法1:首先将nums备份得到temp,然后对nums排序,使用start和end两个指针进行遍历,找到满足和为target的两个数,再在temp中找到两个数对应的下标。代码见twoSum
解法2:使用无序的地图存储数据,然后查找。代码见twoSum2
#include "stdafx.h"#include<iostream>#include<string>#include<vector>#include<algorithm> //调用vector的sort函数#include<unordered_map>using namespace std;
class Solution{public: vector<int>twoSum(vector<int>& nums,int target) //排序,使用两个指针寻找 { vector<int> result; if(nums.size()==0) return result; vector<int> temp=nums; //备份 sort(nums.begin(),nums.end()); //升序排序 int start=0,end=nums.size()-1; while(start<end) { if(nums[start]+nums[end]==target) //找到两个数 { for(int i=0;i<temp.size();i++) //寻找对应的下标 { if(temp[i]==nums[start]) result.push_back(i); if(temp[i]==nums[end]) result.push_back(i); if(result.size()==2) return result; } } if(nums[start]+nums[end]<target) start++; //没有找到,则指针移位 if(nums[start]+nums[end]>target) end--; } return result; } vector<int> twoSum2(vector<int>& nums,int target) { vector<int> result; if(nums.size()==0) return result; unordered_map<int,int> m; for(int i=0;i<nums.size();i++) { if(m.find(target-nums[i])!=m.end()) { result.push_back(m[target-nums[i]]); result.push_back(i); return result; } else m[nums[i]]=i; //map中存储各数据的下标 } }};int _tmain(int argc, _TCHAR* argv[]){ Solution solu; int num[]={2,7,11,15,14,16,18,13}; int target=0; vector<int> nums; for(int i=0;i<sizeof(num)/sizeof(int);i++) { nums.push_back(num[i]); } vector<int> result=solu.twoSum2(nums,target); if(!result.empty()) { vector<int>::iterator it=result.begin(); while(it!=result.end()) { cout<<*it<<endl; it++; } } getchar(); getchar(); return 0;}
阅读全文
0 0
- 1. Two Sum 使用unsorted_map或者vector的sort函数
- [LeetCode]Two Sum 【Vector全局指针的使用】
- Vector的sort的使用
- 1.Two Sum(双指针的使用)
- Two Sum 的map函数
- Java Collections.sort和Arrays.sort使用comparator或者comparable接口的compare函数返回值
- sort函数的使用
- sort函数的使用
- 【leetcode】Two Sum(unordered_map的使用)
- "Sum of Two Integers" and "Sort Colors"
- vector的sort()
- vector的sort 问题
- vector的sort用法
- vector的sort操作
- 对vector进行sort时,cmp函数的写法
- 排序sort()函数的使用
- c++ sort函数的使用
- c++ sort函数的使用
- Android银联控件支付开发流程
- linux下mysql的卸载、安装全过程
- 微信小程序结构简介
- Git学习笔记
- Activity的onNewIntent方法执行时间
- 1. Two Sum 使用unsorted_map或者vector的sort函数
- python正则表达式初探
- java调用有道翻译接口
- sql中left join后用on还是where
- POJ 2887 Big String 笔记
- Win7 如何复制cmd命令行文字
- Qt下 QString转char*
- Hibernate二级缓存完整配置思路
- 首次写博客