博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速寻找满足条件的两个数
阅读量:6504 次
发布时间:2019-06-24

本文共 806 字,大约阅读时间需要 2 分钟。

《编程之美》里的一个题目:能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值,假设这个数组中肯定存在至少一组符合要求的解。

LeetCode的题目:

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 your returned answers (both index1 and index2) are not zero-based.

You may assume that each input would have exactly one solution.

Input: numbers={2, 7, 11, 15}, target=9

Output: index1=1, index2=2

Leetcode的要求要返回索引,比编程之美的要难一些,leetcode论坛里讨论的是用hashmap来做的,实际应用中是可以的,面试时用hashmap就不一定被面试官允许了,如果不允许怎么办呢?

一个办法是复制原来的数组,并对其排序,排序后的数组有额外一个值保存其原来数组的索引,然后再用变成有序数组,就好做了,不过这样需要O(n)的内存空间,但Hashmap也是O(n)的内存空间,计算效率最小为nlgn,比用hashmap稍逊一筹。

转载于:https://www.cnblogs.com/whyandinside/p/3926966.html

你可能感兴趣的文章
开源 免费 java CMS - FreeCMS1.5-建站向导
查看>>
jquery 1.6以上版本 全选
查看>>
AppCan 学习
查看>>
flask框架
查看>>
《疯狂Java讲义》学习笔记(十)异常处理
查看>>
Lua(Codea) 中 table.insert 越界错误原因分析
查看>>
ELK 5.x日志分析 (二) Elasticserach 5.2 安装
查看>>
一次奇怪的AP注册异常问题处理
查看>>
TableStore: 海量结构化数据分层存储方案
查看>>
Unity 4.x游戏开发技巧集锦(内部资料)
查看>>
自适应网页设计
查看>>
获取BT节点信息bittorrent-discovery
查看>>
linux下SVN不允许空白日志提交
查看>>
第2周第1课
查看>>
山寨c 标准库中的getline 函数
查看>>
shell时间
查看>>
pfSense book之2.4安装指南
查看>>
org.springframework.data.redis 一次连接获取特定key所有k-v(pipeline)
查看>>
[译稿]同步复制提议 2010-09
查看>>
windows 自动化目录大纲(各企业架构不一样,按需选择)
查看>>