瓜皮王国的瓜皮小战士:第二题感觉本质就是让一个数组能够存储两种信息,一个是当前index这个数字出现的个数,另一个就是要确认这个index上的数字是否在正确的位置上。
方法一可以参考leetcode 41,吧当前index上的数字和他应该属于的index上面的数字进行交换, 比如a[10]上面放了11就不需要移动,放了8的话就把8和a[7]上面的数字进行交换。而当交换成功之后为了标记当前位置即a[7]上面的数字已经到了正确位置,则可以采取前面楼层的做法,比如把这个数字置为负数比如-1,然后每次有数字移动到这个index7上的时候,-1减一,最后当前index+1这个数字出现的次数就是此位置负数变正再减一。
方法二就是如果这数组的数字比较小的话,当前位置这个数字是一个interger,有32位,可以用前16位去存当前index+1这个数字的出现的次数。这就有点取巧了。
总之这题主要就是通过用一个数组存储两种信息,不管是用正负来代替boolean,还是用interger或者long多出来的位数存储,核心就是如何用一个数组存2N的信息。
投递微软等公司8个岗位 >
0 点赞 评论 收藏
分享
投递字节跳动等公司8个岗位 >
0 点赞 评论 收藏
分享
投递字节跳动等公司8个岗位 >
0 点赞 评论 收藏
分享
创作者周榜
更多
关注他的用户也关注了: