难度:中等。
标签:排序,图。
不知道怎么用图,但可以暴力做出来。
正确解法:
class Solution {
int getWeight(int x){
if(x == 1)return 0;
else if(x % 2)return getWeight(3 * x + 1) + 1;
else return getWeight(x / 2) + 1;
}
static bool cmp(vector<int>& a, vector<int>& b){
if(a[1] == b[1])return a[0] < b[0];
return a[1] < b[1];
}
public:
int getKth(int lo, int hi, int k) {
vector<vector<int>> res(hi - lo + 1);
for(int i = lo; i <= hi; i++){
int w = getWeight(i);
res[i - lo].push_back(i);
res[i - lo].push_back(w);
}
sort(res.begin(), res.end(), cmp);
return res[k - 1][0];
}
};
结果: