📣 独立日限时特惠: VIP通行证立减$68
回复: 20
跳转到指定楼层
上一主题 下一主题
收起左侧

一道有趣的GG面试题

全局:

2017(10-12月) 码农类General 本科 全职@google - 内推 - 技术电面  | | Other | 应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x

给定n种面值a1, a2, ..., an,和一个整数m。
让你决定每一枚面值的硬币的使用数量,使得总硬币数最
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
m=9
则面值1的使用4枚,面值5的使用1枚




上一篇:刚考完Amazon OA1...爆炸T^T
下一篇:Amazon 实习

本帖被以下淘专辑推荐:

  • · Google|主题: 458, 订阅: 133
推荐
xixiaoxi 2017-2-2 05:56:27 | 只看该作者
全局:
kunge12345 发表于 2017-1-29 05:33
没明白你的问题。。。这两题本质上不是一样的吗。。。
上代码
public static Map minNumCoin(Set coins ...

我觉得你的算法应该不太对,比如我有1,2,21,25美分的硬币,target number是63。正确答案应该是21+21+21,3个硬币。你的算法应该是会从1开始找起。leetcode 330的贪心算法保证了[1,n]的所有面值,这个题只需要保证n最优就可以了。
回复

使用道具 举报

推荐
kunge12345 2017-1-28 21:47:11 | 只看该作者
全局:
李口德330 patching array一样的思路,greedy

补充内容 (2017-2-2 07:33):
”并且对于1...m中每一种面值,都可以用你选出的硬币拼出。“
难道我跟诸位的打开方式不一样?


补充内容 (2017-2-5 22:04):
请先看清题目!!!!!
请先看清题目!!!!!
请先看清题目!!!!!
请先看清题目!!!!!
还有人说greedy不对要用DP的,我不会再回复了
回复

使用道具 举报

推荐
kunge12345 2017-2-2 07:01:55 | 只看该作者
全局:
xixiaoxi 发表于 2017-2-2 05:56
我觉得你的算法应该不太对,比如我有1,2,21,25美分的硬币,target number是63。正确答案应该是21+21+2 ...

你没看到lz写的大大的
“并且对于1...m中每一种面值,都可以用你选出的硬币拼出。”
???
回复

使用道具 举报

🔗
zhengyuyu 2017-1-28 14:18:28 | 只看该作者
全局:
背包问题的变种吧,dp可解
回复

使用道具 举报

🔗
renyiryry 2017-1-28 18:14:20 | 只看该作者
全局:
人气这么少?为楼主挽尊
回复

使用道具 举报

🔗
delcarren 2017-1-28 18:33:49 | 只看该作者
全局:
这题还可以加点难度,要求返回选择结果,in descending order,如果有多解,选择lexicographic order最大的。比如硬币2,3,4,要凑出6,返回4,2而不是3,3
回复

使用道具 举报

🔗
shufezq 2017-1-29 03:54:50 | 只看该作者
全局:
kunge12345 发表于 2017-1-28 21:47
李口德330 patching array一样的思路,greedy

LC330每个index只能出现一次,这个可以无限重复,还是不一样的吧? 还是有什么其他的思路?
回复

使用道具 举报

🔗
byrlhb 2017-1-29 05:26:01 | 只看该作者
全局:
leetcode 换个方式问罢了
回复

使用道具 举报

🔗
byrlhb 2017-1-29 05:26:21 | 只看该作者
全局:
kunge12345 发表于 2017-1-28 21:47
李口德330 patching array一样的思路,greedy

同意 字数字数字数

回复

使用道具 举报

🔗
kunge12345 2017-1-29 05:33:19 | 只看该作者
全局:
shufezq 发表于 2017-1-29 03:54
LC330每个index只能出现一次,这个可以无限重复,还是不一样的吧? 还是有什么其他的思路?

没明白你的问题。。。这两题本质上不是一样的吗。。。
上代码
public static Map<Integer, Integer> minNumCoin(Set<Integer> coins, int m){
    int miss = 1;
    HashMap<Integer, Integer> map = new HashMap<>();
    for(int coin : coins){
        map.putIfAbsent(coin, 0);
    }

    int next = 0;
    while (miss <= m){
        for(int coin : coins){
            if(coin > next && coin <= miss){
                next = coin;
            }
        }
        if (next == 0){
            return null; // not possible
        }
        miss += next;
        map.put(next, map.get(next) + 1);
    }

    return map;
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表