算法笔记-哈希表之冰淇淋购买问题(Ice Cream Parlor)
问题描述:
sunny和johny两个人要到冰激凌店买冰淇淋。店里每次都有很多种口味,每种口味有自己的单价。他们俩一共带的钱总数为money。所有口味的单价组成一个列表是array。要求两个人必须将所带的钱消费完,买两种冰淇淋。假如每种冰淇淋在列表里从1开始标号,程序要打印出买的两种冰淇淋的标号
Sample:***** Input:***** money = 4***** cost = 1 4 5 3 2***** Output:***** 1 4***** Input:***** money = 4***** cost = 2 2 4 3***** Output:***** 1 2
最直接的方法:双重for循环,时间复杂度为n平方
NSArray *array = @[@(1),@(4),@(5),@(3),@(2),@(9)];
NSInteger money = 10;
/// 时间复杂度 ——> n平方
for (int i = 0; i < array.count; i++) {
NSInteger value = money - [array[i] integerValue];
for (int j = i + 1; j < array.count; j++) {
if ([array[j] integerValue] == value) {
NSLog(@”—%d—-%d”,i+1, j+1);
break;
}
}
}
哈希表:Dictionary —> 一边构造哈希表一边遍历
/// 构建哈希表
NSMutableDictionary *parameter = [NSMutableDictionary dictionary];
for (int i = 0; i < array.count ; i++) {
NSString *value = [array[i] description];
NSString *key = [NSString stringWithFormat:@”%ld”, money - value];
if ( [parameter.allKeys containsObject:key] && [parameter[key] integerValue] != i) {
NSLog(@”111—%d—–%ld”,i + 1, [parameter[key] integerValue] + 1);
return;
}
[parameter setValue:@(i) forKey:value];
}
算法笔记-哈希表之冰淇淋购买问题(Ice Cream Parlor)相关推荐
- 【算法】哈希表 ( 两数之和 )
算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...
- 查找算法【哈希表】 - 处理冲突的方法:开放地址法-线性探测法
查找算法[哈希表] - 处理冲突的方法 无论如何设计散列函数,都无法避免发生冲突. 如果发生冲突,就需要处理冲突. 处理冲突的方法分为3种: 开放地址法 链地址法 建立公共溢出区. [开放地址法] 开 ...
- 查找算法【哈希表】 - 散列查找及性能分析
查找算法[哈希表] - 散列查找及性能分析 散列表虽然建立了关键字和存储位置之间的直接映像,但冲突不可避免,在散列表的查找过程中,有的关键字可以通过直接定址1次比较找到,有的关键字可能仍然需要和若干关 ...
- 查找算法【哈希表】- 散列函数
查找算法[哈希表]- 散列函数 散列函数(Hash Function),又被称为哈希函数,是将关键字映射到存储地址的函数,被记为hash(key)=Addr. 设计散列函数时需要遵循两个原则: ①散列 ...
- 散列算法和哈希表结构
散列算法和哈希表结构 散列算法和哈希表结构 算法概述 Hash ,一般翻译做" 散列" ,也有直接音译为" 哈希" 的,就是把任意长度的输入(又叫做预映射, p ...
- 哈希算法、哈希表的作用与原理
闲谈Hash 由于以前对hash的理解就不是很透彻,与是在工作不忙的时候,回首掏了一波hash,并记录一下自己的心得体会. 哈希算法和哈希表都不是自然产生的,都是人为的产物,既然是人为了的,那么就可以 ...
- 【从蛋壳到满天飞】JS 数据结构解析和算法实现-哈希表
前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...
- “chaos”的算法---之哈希表(HASH)算法详解
[ 声明:版权所有,欢迎转载. 联系信箱:yiluohuanghun@gmail.com] 在数据查找中我们会想到很多不错的.行之有效的方法,大体分为以下几种,1.对于空间连续的数据采用二分查找法等 ...
- 数据结构学习笔记 哈希表(一) 哈希表基础与哈希函数
------HR:The first question is what you do if you have a conflict with your manager ? ------You:Hash ...
最新文章
- git克隆远程项目并创建本地对应分支
- 【Unity】5.1 3D坐标系基础知识
- CentOS7安装RabbitMQ集群
- BeautifulSoup的高级应用 之 contents children descendants string strings stripped_strings
- Maven整合SSM测试
- java创建阻塞_如何从HttpsURLConnection创建Java非阻塞InputStream?
- keepalived 构建主备mysql
- 【DSP开发】【VS开发】YUV与RGB格式转换
- 转:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确 .
- 大小不固定的图片和多行文字的垂直水平居中
- python字符串批量替换、修改多个字符的方法实例
- 最常用的 HTTP 方法:GET 和 POST
- Python+ZeroMQ快速实现消息发布与订阅
- Python学习入门基础教程(learning Python)--5.1 Python下文件处理基本过程
- nodejs+vue+elementui房屋租赁网站系统 python协同过滤推荐系统
- 基于java实现PDF转图片图片合成PDF
- 挖掘数百万参与的IMVU用户
- bzoj2101[Usaco2010 Dec]Treasure Chest 藏宝箱 DP
- [ 认知心理学 ] 帮我家呆瓜整理的《认知心理学》资料,麻了 --- 考研复习 --- 期末复习
- 忙碌中也要记得休息,这两款好玩的游戏推荐给你