Two Sum(C、C++、Python)
leetcode01.
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.
- C++解法
vector<int> twoSum(vector<int> &nums,int target)
{
vector<int> result;
map<int,int> maps;
int count=nums.size();
for (int i=0;i<count;i++) {
int complement=target-nums[i];
if (maps.find(complement)!=maps.end()) {
result.push_back(maps[complement]);
result.push_back(i);
}
maps[nums[i]]=i;
}
return result;
}
- C解法
int* twoSum(int* nums, int numsSize, int target) {
int min = nums[0];
int i = 0;
for (i = 0; i < numsSize; i++) {
if (nums[i] < min)
min = nums[i];
}
int max = target - min;
int len = max - min + 1; //确定hash长度
int *table = (int*)malloc(len*sizeof(int));
int *indice = (int*)malloc(2*sizeof(int));
for (i = 0; i < len; i++) {
table[i] = -1; //hash初值
}
for (i = 0; i < numsSize; i++) {
if (nums[i]-min < len) {
if (table[target-nums[i]-min] != -1) { //满足相加为target
indice[0] = table[target-nums[i] - min];
indice[1] = i;
return indice;
}
table[nums[i]-min] = i;
}
}
free(table);
return indice;
}
- python3解法
def twoSum(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: List[int]
"""
keys = {}
for i in range(len(nums)):
if target - nums[i] in keys:
return [keys[target - nums[i]], i]
if nums[i] not in keys:
keys[nums[i]] = i
Two Sum(C、C++、Python)相关推荐
- 带你自学Python系列(四):range、min、max、sum函数
↑ 点击上方[计算机视觉联盟]关注我们 今天是小编持续更新关于Python的知识总结以及Python实践项目应用的第4天,带你利用零碎时间自学最受欢迎的编程语言之一Python语言.你和小编一起打卡了 ...
- Python函数:np.sum()以及axis=0、axis=1用法
Python基本函数:np.sum() 一.具体用法 常用于矩阵求和计算,以下用法分为三种情况来介绍! 格式:np.sum(a) np.sum(a, axis=0) ------ ...
- 《Python编程从入门到实践》记录之range、min、max、sum函数
目录 1.range()函数 2.min.max.sum函数 1.range()函数 range(num1,num2,steps)函数:可以生成一个一系列数字. num1参数:表示起始范围 ...
- 完全理解Python迭代对象、迭代器、生成器
本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文的中译版本,推荐阅读原文,谢谢网 ...
- Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- python学习笔记-基础、语句、编码、迭代器
#python的优缺点 优点:Python简单优雅,尽量写容易看明白的代码,尽量写少的代码. 缺点:第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一 ...
- 独家|测量、建议、快速上手!你所使用的Python对象占用了多少内存?(附代码)...
作者:Gigi Sayfan 翻译:吴振东 校对:吴金笛 本文约3300字,建议阅读10分钟. 本文将介绍多种Python对象分别所占用的内存,并解释所选择的测量方法和函数,为节省内存提供建议. Py ...
- Python(迭代、三元表达式、列表生成、生成器、迭代器)
迭代 什么是迭代1 重复2 下次重复一定是基于上一次的结果而来 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). 在 ...
- python控制结构是_Python之控制结构(if、while、for)
控制结构就是指顺序结构.分支结构.循环结构. 一.顺序结构 这是一种最简单的程序结构,程序按语句的书写次序自上而下顺序执行. 例如:给出圆的半径,求圆的周长和面积. 源程序: >>> ...
- sql 分类汇总 列_分类汇总哪家强?R、Python、SAS、SQL?
Excel数据透视表(Pivot Table)可以快速汇总大量数据,能够分类汇总和聚合数值数据,按类别和子类别汇总数据,功能十分强大,并且提供了展开.折叠.行列交换等交互式方法,对使用者来说十分的友好 ...
最新文章
- util.Date与sql.Date的相互转换以及区别
- TouTiao开源项目 分析笔记7 加载数据的过程
- Mark一下 | 当当优惠码,实付满150减30 | + 荐书
- 会计云课堂实名认证后怎么更改_会计云课堂怎么听课 网上听课步骤详解
- 一年多的远程办公带给我的感悟
- [HTML/CSS]下拉菜单
- 蹭热点,B站源码泄露,是道德的沦丧还是P民的福音
- matlab绘正态/卡方/t/F分布概率密度图
- 关于ECharts中调整容器与图表的位置关系
- 腾讯优图计算机招聘视觉大咖(2022届校招+实习)
- ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
- writev遇到非阻塞IO
- Wireshark内容过滤方法
- 2003服务器系统QQ安装不了,关于windows 2003 sp2 不能使用QQ的解决办法
- C语言 吃鱼还是吃肉
- pycharm配置可视化界面流程简介
- 用趋势突破策略回测CTA
- 2021年第一季度中国电竞行业网络关注度分析报告
- dockers安装Jenkins
- 路由器wifi密码设置