题解 | #最接近的数#

最接近的数

http://www.nowcoder.com/practice/33ad4d168a3247b9b63f41e4eaded652

class CloseNumber {
public:
    vector<int> getCloseNumber(int x) {
        // write code here
        bitset<32> lower(x);
        bitset<32> upper(x);
        
        int l = -1;
        for (int i = 0; i < lower.size() - 1; i++)
        {
            if (lower[i] == 0 && lower[i + 1] == 1)
            {
                lower.flip(i);
                lower.flip(i + 1);
                int left = 0, right = i - 1;
                while (left < right)
                {
                    while (lower[left] == 0)
                    {
                        left++;
                    }
                    while (lower[right] == 1)
                    {
                        right--;
                    }
                    if (left < right)
                    {
                        lower.flip(left++);
                        lower.flip(right--);
                    }
                }
                break;
            }
        }
        l = (int)lower.to_ulong();
        
        int r = -1;
        for (int i = 0; i < upper.size() - 1; i++)
        {
            if (upper[i] == 1 && upper[i + 1] == 0)
            {
                upper.flip(i);
                upper.flip(i + 1);
                int left = 0, right = i - 1;
                while (left < right)
                {
                    while (upper[left] == 1)
                    {
                        left++;
                    }
                    while (upper[right] == 0)
                    {
                        right--;
                    }
                    if (left < right)
                    {
                        upper.flip(left++);
                        upper.flip(right--);
                    }
                }
                break;
            }
        }
        r = (int)upper.to_ulong();
        return {l, r};
    }
};
全部评论

相关推荐

醒工硬件:1学校那里把xxxxx学院去了,加了学院看着就不像本校 2简历实习和项目稍微精简一下。字太多,面试官看着累 3第一个实习格式和第二个实习不一样。建议换行 4项目描述太详细了,你快把原理图贴上来了。比如可以这样描述:使用yyyy芯片,使用xx拓扑,使用pwm控制频率与占空比,进行了了mos/电感/变压器选型,实现了xx功能 建议把技术栈和你做的较为有亮点的工作归纳出来 5熟悉正反激这个是真的吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务