题解 | #二叉树#

二叉树

https://www.nowcoder.com/practice/5b80ab166efa4551844657603227caeb

#include <bits/stdc++.h>
using namespace std;

int main() {
    long long a, b;
    while (cin >> a >> b) { // 注意 while 处理多个 case
        if(a == 1 || b == 1){
            cout<<1<<endl;
        }else{
            vector<long long> arr,brr;
            while(a!=0){
                arr.push_back(a);
                a/=2;
            }
            while(b!=0){
                brr.push_back(b);
                b/=2;
            }
            reverse(arr.begin(),arr.end()); 
            reverse(brr.begin(),brr.end());
            long long i;
            for(i =0;i<min(arr.size(),brr.size());i++){
                if(arr[i]!=brr[i]){
                    cout<<arr[i-1]<<endl;
                    break;
                }
            } 
            if(i == min(arr.size(),brr.size())){
                cout<<(arr.size()<brr.size()?arr[i-1]:brr[i-1])<<endl;
            }
        }
    }
}

缝缝补补,思路有点乱

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务