classSolution{public:intintegerReplacement(int n){int ans =0;while(n !=1){if(n %2==0){++ans;
n /=2;}elseif(n %4==1){
ans +=2;
n /=2;}else{if(n ==3){
ans +=2;
n =1;}else{
ans +=2;
n = n /2+1;}}}return ans;}};
classSolution{public:staticcharcmp(char a ,char b){//辅助将string从大到小排序return a>b;}intmaximumSwap(int num){
string change =to_string(num);
string exchange = change;sort(exchange.begin(),exchange.end(),cmp);char small =' ';char big =' ';for(int i =0; i< change.size(); i++){if(exchange[i]!= change [i]){
small = change[i];
big = exchange[i];
change[i]= exchange[i];break;}}for(int i = change.size()-1; i >=0; i--){if(small!=' '&& change[i]== big){
change[i]=small;break;}}int res =stoi(change);return res;}};
classSolution{public:intsmallestRangeII(vector<int>& nums,int k){sort(nums.begin(), nums.end());int res = nums.back()- nums[0];int n = nums.size();for(int i =0; i < n-1;++i){int l =min(nums[0]+k, nums[i+1]-k);int h =max(nums[n-1]-k, nums[i]+k);
res =min(res, h-l);}return res;}};