问题描述:

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)相关推荐

  1. 【算法】哈希表 ( 两数之和 )

    算法 系列博客 [算法]刷题范围建议 和 代码规范 [算法]复杂度理论 ( 时间复杂度 ) [字符串]最长回文子串 ( 蛮力算法 ) [字符串]最长回文子串 ( 中心线枚举算法 ) [字符串]最长回文 ...

  2. 查找算法【哈希表】 - 处理冲突的方法:开放地址法-线性探测法

    查找算法[哈希表] - 处理冲突的方法 无论如何设计散列函数,都无法避免发生冲突. 如果发生冲突,就需要处理冲突. 处理冲突的方法分为3种: 开放地址法 链地址法 建立公共溢出区. [开放地址法] 开 ...

  3. 查找算法【哈希表】 - 散列查找及性能分析

    查找算法[哈希表] - 散列查找及性能分析 散列表虽然建立了关键字和存储位置之间的直接映像,但冲突不可避免,在散列表的查找过程中,有的关键字可以通过直接定址1次比较找到,有的关键字可能仍然需要和若干关 ...

  4. 查找算法【哈希表】- 散列函数

    查找算法[哈希表]- 散列函数 散列函数(Hash Function),又被称为哈希函数,是将关键字映射到存储地址的函数,被记为hash(key)=Addr. 设计散列函数时需要遵循两个原则: ①散列 ...

  5. 散列算法和哈希表结构

    散列算法和哈希表结构 散列算法和哈希表结构 算法概述 Hash ,一般翻译做" 散列" ,也有直接音译为" 哈希" 的,就是把任意长度的输入(又叫做预映射, p ...

  6. 哈希算法、哈希表的作用与原理

    闲谈Hash 由于以前对hash的理解就不是很透彻,与是在工作不忙的时候,回首掏了一波hash,并记录一下自己的心得体会. 哈希算法和哈希表都不是自然产生的,都是人为的产物,既然是人为了的,那么就可以 ...

  7. 【从蛋壳到满天飞】JS 数据结构解析和算法实现-哈希表

    前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...

  8. “chaos”的算法---之哈希表(HASH)算法详解

    [ 声明:版权所有,欢迎转载.  联系信箱:yiluohuanghun@gmail.com] 在数据查找中我们会想到很多不错的.行之有效的方法,大体分为以下几种,1.对于空间连续的数据采用二分查找法等 ...

  9. 数据结构学习笔记 哈希表(一) 哈希表基础与哈希函数

    ------HR:The first question is what you do if you have a conflict with your manager ? ------You:Hash ...

最新文章

  1. git克隆远程项目并创建本地对应分支
  2. 【Unity】5.1 3D坐标系基础知识
  3. CentOS7安装RabbitMQ集群
  4. BeautifulSoup的高级应用 之 contents children descendants string strings stripped_strings
  5. Maven整合SSM测试
  6. java创建阻塞_如何从HttpsURLConnection创建Java非阻塞InputStream?
  7. keepalived 构建主备mysql
  8. 【DSP开发】【VS开发】YUV与RGB格式转换
  9. 转:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确 .
  10. 大小不固定的图片和多行文字的垂直水平居中
  11. python字符串批量替换、修改多个字符的方法实例
  12. 最常用的 HTTP 方法:GET 和 POST
  13. Python+ZeroMQ快速实现消息发布与订阅
  14. Python学习入门基础教程(learning Python)--5.1 Python下文件处理基本过程
  15. nodejs+vue+elementui房屋租赁网站系统 python协同过滤推荐系统
  16. 基于java实现PDF转图片图片合成PDF
  17. 挖掘数百万参与的IMVU用户
  18. bzoj2101[Usaco2010 Dec]Treasure Chest 藏宝箱 DP
  19. [ 认知心理学 ] 帮我家呆瓜整理的《认知心理学》资料,麻了 --- 考研复习 --- 期末复习
  20. 忙碌中也要记得休息,这两款好玩的游戏推荐给你

热门文章

  1. 维护点权最大的最短路+输出路径
  2. JS垃圾回收机制是怎样的?
  3. 嵌入式QT中文显示的问题
  4. 木棍游戏 深度优先搜索
  5. python浮雕图片_Python bug,只出现在使用Numpy的浮雕图像上
  6. Laya 发布OPPO时使用签名注意
  7. 飞鸽传输、Locus、步行者坐标导航
  8. 配置org.springframework.scheduling.quartz.CronTriggerBean(转)
  9. 服务器搭建博客(二):服务器LNMP环境搭建
  10. matlab 马尔可夫链代码