一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 499|回复: 12
收起左侧

[CareerCup] 【第三轮】7.24-7.31 CareerCup 5.1

[复制链接] |试试Instant~ |关注本帖
林微熙 发表于 2014-7-25 06:26:07 | 显示全部楼层 |阅读模式

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
本帖最后由 林微熙 于 2014-7-24 15:35 编辑

5.1 You are given two 32-bit numbers, N andM, and two bit positions, i and j. Write a method to insert M into Nsuch that M starts at bit j and ends at bit i. You can assume that the bits j through i have enough space to fit all ofM. That is, ifM= 10011, you can assume that there are at least 5 bits between j and i. You would not, for example, have j-3 and i=2, because M could not fully fit between bit 3 and bit 2.
EXAMPLE:
Input: N = 16000000000, M = 10011, i = 2, j = 6
Output: N = 10001001100

回复解法可以按照以下格式来
【解题思路】
【时间复杂度】
【空间复杂度】
【gist link】
---------------OPTional,如果觉得test case比较好,欢迎写出来分享----------------------
【test case】



Notice:
1、记得在程序注释中表明自己算法的时间、空间复杂度
2、代码难懂之处加注释
3、每道题目有对应的帖子,除了贴解法,欢迎讨论,集思广益
4、任何未尽之处,欢迎回报名帖提问,我会进一步作出修改


不知道原组织者是不是有什么事情了
我就冒昧继续贴了
**求大牛们继续抛砖引玉啊

grassgigi 发表于 2014-7-25 11:59:52 | 显示全部楼层
【解题思路】
Reset i-j bits in N to 0s
Left shift M to fit the i-j position, then perform OR(|) operation between N and M

【时间复杂度】
O(1) - all operations on integer which has 32 bit length

【空间复杂度】
O(1)

【gist link】
https://gist.github.com/chrislukkk/b634340fb10b2ddb13c5
回复 支持 反对

使用道具 举报

jyh橘子 发表于 2014-7-25 12:40:07 | 显示全部楼层
【解题思路】
1. set the bits between index i and index j of n to zeroes;
2. left shift m    i bits
3. combine cleared n and shifted m by or operation
【时间复杂度】
O(1)
【空间复杂度】
O(1)
【gist link】https://gist.github.com/jyhjuzi/ac6f0b44c4db8b804cc5
回复 支持 反对

使用道具 举报

renli3000 发表于 2014-7-26 04:03:35 | 显示全部楼层

【解题思路】
To inser ones in M, use & ..00M00... To insert zeros in M, use | ..11M11..
The remaining work is to prepare ..00M00.. and ..11M11..
【时间复杂度】
O(1) - all operations on integer which has 32 bit length

【空间复杂度】
O(1)

【gist link】
https://gist.github.com/Noahsark/24fd12d416eb0cf16c2c
回复 支持 反对

使用道具 举报

圆梦梦剧场 发表于 2014-7-27 20:56:54 | 显示全部楼层
【解题思路】
1. clear the i-th bit  to j-th in N
2. left shift M by i bits
3. OR the results from step 1 and 2

【时间复杂度】
O(1)


【空间复杂度】
O(1)


【gist link】
https://gist.github.com/happyWinner/b8205432cf5317e80108

回复 支持 反对

使用道具 举报

bearkino 发表于 2014-7-28 08:08:14 | 显示全部楼层
【解题思路】
1. make a mask to clear from j to i with N
2. move the M to the right place
3. "|" OR the step 1 and step 2, put the 1s in M into N, get the answer

【时间复杂度】
O(1)

【空间复杂度】
O(1)

【gist link】
https://gist.github.com/UncleGarden/808982dd62823f43127f
回复 支持 反对

使用道具 举报

ivycheung1208 发表于 2014-7-29 12:01:42 | 显示全部楼层
【解题思路】
1. reset and update N bit by bit
2. reset N using a mask, shift M and insert to N
【时间复杂度】
O(1)
【空间复杂度】
O(1)
【gist link】
https://gist.github.com/1c8a3e1d1f8d99da01ec
回复 支持 反对

使用道具 举报

wilbert 发表于 2014-8-2 02:05:33 | 显示全部楼层
【解题思路】
bitwise operation, zero bits between i to j in N and left shift M for i bits, then or together
【时间复杂度】
O(1)
【空间复杂度】
O(1)
【gist link】
https://gist.github.com/iwilbert/f658d122e171ea6ab848
回复 支持 反对

使用道具 举报

 楼主| 林微熙 发表于 2014-8-3 03:33:04 | 显示全部楼层
【解题思路】Clear the bits j through i to N, shift m so lines up with j through i, merge M&N
【时间复杂度】O(1)
【空间复杂度】O(1)
【gist link】https://gist.github.com/hilda8519/c32362e64c608da321ab
回复 支持 反对

使用道具 举报

bitcpf 发表于 2014-8-4 11:40:03 | 显示全部楼层
【解题思路】
build a mask that from j+1 to i are zeros, and get part of n whose value in the 1s of mask, then left shift m for i, return part of n | shifted m
【时间复杂度】
O(1)
【空间复杂度】
O(1)
【gist link】
https://gist.github.com/bitcpf/4557650885e95e0e41cb
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-7 05:49

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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