美国华人网FuninUSA_唐人社区_北美华人论坛:找礼品卡,找折扣,找报价,找工作,找内推,找项目,找股票

 找回密码
 立即注册
  • 澳洲传说中“巨猫”被目击:通体黑色
  • 2米长巨型响尾蛇与喵星人放一起后:竟相安无事
  • 珠峰大本营终于淘汰发电机:全部接入国家电网
  • 再也不怕堵了!史上最帅汽车:可垂直起飞
  • 日本天空惊现巨型十字架 网友:EVA来了!
  • 美国黄石公园美丽白狼神秘重伤:忍痛安乐死
  • 时速2000km!中国世界首条海底超级高铁呼之欲出
  • 飞鸟钻入引擎:美国国宝级轰炸机烧成灰烬
  • 图中竟然藏了一条蛇:网友找疯了
  • 科学家发现毛毛虫可完美降解塑料袋:效率极高
  • 100天了,特朗普的“三驾马车”还能走多远
  • 法国大选是否能点燃美国市场?
  • 对于IBM,巴菲特到底是怎么想的?
  • 对于石油,投资者难得保持一致意见:看跌
  • 福特汽车销量“遇冷”
Logo1-800-PetMeds Free Shipping $49Take $10 Off Your First Order w/code: SAVE10 - 234 x 60
ASICS AmericaPagoda Piercing Banner 234x60Sierra Trading Post
搜索
查看: 3040|回复: 8

内推面经 -求助一道算法题, 在限定三个operation下使一个数变成1的最小- 唐人社区|北 ...

[复制链接]

21

主题

35

帖子

79

积分

新手上路

Rank: 1

积分
79
QQ
发表于 2016-10-2 22:13:27 | 显示全部楼层 |阅读模式
分享到:
{$content}

唐人社区-北美华人论坛-内推面经版-求助一道算法题, 在限定三个operation下使一个数变成1的最小


  JobHunting
标 题: 求助一道算法题, 在限定三个operation下使一个数变成1的最小操作数


The description of the problem is : Write a function which takes a positive
integer as a string and returns the minimum number of operations needed to
transform the number to 1. The number is up to 309 digits long, so there won
't too many character than you can express in that many digits. The
transform process is limited to three operations: 1. Add 1 2. Subtract 1 3.
Divide the number by 2 (only even number allow here)
我的想法是用dfstraverse所有可能, 用memorization来剪枝,但是最后还是超时了,
求教如何进一步优化或者一种方法处理。 因为输入时string所以处理起来很麻烦
--

【返利网站】返利额度最高的海外购物返利网站Topcashback:平均返利7~10%,注册就送$10点我注册
回复 百度谷歌雅虎搜狗搜搜有道360奇虎

举报

6

主题

236

帖子

234

积分

中级会员

Rank: 3Rank: 3

积分
234
QQ
发表于 2016-10-2 22:45:27 | 显示全部楼层
JobHunting
标  题: Re: 求助一道算法题, 在限定三个operation下使一个数变成1的最小


https://leetcode.com/problems/integer-replacement/

【 在 dashenswen (dashenswen) 的大作中提到: 】
: The description of the problem is : Write a function which takes a
positive
: integer as a string and returns the minimum number of operations needed to
: transform the number to 1. The number is up to 309 digits long, so there
won
: 't too many character than you can express in that many digits. The
: transform process is limited to three operations: 1. Add 1 2. Subtract 1 3
.
: Divide the number by 2 (only even number allow here)
: 我的想法是用dfstraverse所有可能, 用memorization来剪枝,但是最后还是超时了,
: 求教如何进一步优化或者一种方法处理。 因为输入时string所以处理起来很麻烦


--
Look. If you had one shot or one opportunity to seize everything you ever wanted in one moment.
Would you capture it or just let it slip?

26

主题

97

帖子

166

积分

注册会员

Rank: 2

积分
166
QQ
发表于 2016-10-2 23:05:27 | 显示全部楼层
JobHunting
标  题: Re: Re: 求助一道算法题, 在限定三个operation下使一个数变成1


class Solution {
public:
    int integerReplacement(int n) {
       if (n==0 || n==1) return 0;
       if (n==INT_MAX) return 32;
       if ((n&1)==0) return 1+integerReplacement(n>>1); //even
       else {
           return 1+min(integerReplacement(n-1), integerReplacement(n+1));
       }
    }
};

【 在 coldknight (冷骑士) 的大作中提到: 】
: https://leetcode.com/problems/integer-replacement/
: positive
: won
: .



--

19

主题

74

帖子

116

积分

注册会员

Rank: 2

积分
116
QQ
发表于 2016-10-2 23:07:36 | 显示全部楼层
JobHunting
标  题: Re: Re: Re: 求助一道算法题, 在限定三个operation下使一个数

19

主题

96

帖子

131

积分

注册会员

Rank: 2

积分
131
QQ
发表于 2016-10-3 01:03:13 | 显示全部楼层
JobHunting
标  题: Re: Re: 求助一道算法题, 在限定三个operation下使一个数变成


你这个同时尝试两个possibility
可能会TLE
leetcode讨论里面给了个解法,只把n==3当做例外
但我不知道面试时候遇到怎么能短时间内观察出这个。。。

【 在 magician (爱情魔法师) 的大作中提到: 】
: class Solution {
: public:
:     int integerReplacement(int n) {
:        if (n==0 || n==1) return 0;
:        if (n==INT_MAX) return 32;
:        if ((n&1)==0) return 1+integerReplacement(n>>1); //even
:        else {
:            return 1+min(integerReplacement(n-1), integerReplacement(n+1));
:        }
:     }
: ...................



--

3

主题

243

帖子

249

积分

中级会员

Rank: 3Rank: 3

积分
249
QQ
发表于 2016-10-3 02:43:19 | 显示全部楼层
JobHunting
标  题: 求助一道算法题, 在限定三个operation下使一个数变成1的最小操作数


The description of the problem is : Write a function which takes a positive
integer as a string and returns the minimum number of operations needed to
transform the number to 1. The number is up to 309 digits long, so there won
't too many character than you can express in that many digits. The
transform process is limited to three operations: 1. Add 1 2. Subtract 1 3.
Divide the number by 2 (only even number allow here)
我的想法是用dfstraverse所有可能, 用memorization来剪枝,但是最后还是超时了,
求教如何进一步优化或者一种方法处理。 因为输入时string所以处理起来很麻烦
--

15

主题

1197

帖子

2363

积分

金牌会员

Rank: 6Rank: 6

积分
2363
QQ
发表于 2016-10-25 12:20:44 | 显示全部楼层
有空一起交流一下

26

主题

1197

帖子

2348

积分

金牌会员

Rank: 6Rank: 6

积分
2348
QQ
发表于 2016-10-29 17:34:31 | 显示全部楼层
楼下的接上

24

主题

1186

帖子

2336

积分

金牌会员

Rank: 6Rank: 6

积分
2336
QQ
发表于 2016-10-29 17:34:31 | 显示全部楼层
有空一起交流一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

美国华人网|唐人社区|什么值得买FunInUSA.net发布的内推面经 -求助一道算法题, 在限定三个operation下使一个数变成1的最小- 唐人社区|北 ...帖子由网友提供或转载于网络,若发布的内推面经 -求助一道算法题, 在限定三个operation下使一个数变成1的最小- 唐人社区|北 ...侵犯了您的权益,请联系我们.
Sasa.com

Copyright ©2011 FunInUSA.NET All Right Reserved.  Powered by Discuz! X3.0 小黑屋

本站信息均由会员发表,不代表美国华人网FunInUSA|唐人社区的立场,如侵犯了您的权利请发帖投诉  技术支持: 美国华人网FunInUSA|唐人社区

安全联盟认证 安全联盟认证

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