给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。-笔试面试资料

这是qklbishe.com第19503 篇笔试面试资料
提供答案分析,通过本文《给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

给定一个整数给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。,牛牛每次可以交换给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。中相邻的两位数。牛牛想将给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。变为一个大于等于给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。的最小整数(无前导零,即初始为给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。时,结果不为给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。)。牛牛想知道他最少交换多少次可以让给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。变为大于等于给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。的最小整数呢。如有给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。,牛牛仅交换一次给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。使得给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。变为大于等于给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。的最小整数。

给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。 没有梦想何必远方
将整数n拆解为0-9范围内的数字,dfs搜索用这些数字可以得到的>=k的最小整数m
贪心算法计算n变成m需要的最少交换次数
class Solution { public:     /**      * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可      *      *       * @param n long长整型       * @param k long长整型       * @return int整型      */     typedef long long ll;     int minSwap(long long n, long long k) {         // write code here         ll m = n;         int freq[10], len = 0;         memset(freq, 0, sizeof(freq));         while (m)         {             freq[m%10]++;             m /= 10, len++;         }         vector<int> p;         work(k, p);         function<bool(ll, int, bool)> getLowerK = [&](ll t, int index, bool gre)->bool {             if (index == len)             {                 m = t;                 return true;             }             int i = (gre ? 0 : p[index]);             for (; i < 10; ++i)             {                 if (freq[i] == 0) continue;                 freq[i]--;                 bool ggre = (i > p[index]);                 if (getLowerK(t*10+i, index+1, gre||ggre))                     return true;                 freq[i]++;             }             return false;         };         getLowerK(0, 0, false);         vector<int> q;         work(m, q);         p.resize(0);         work(n, p);         auto calc = [&]()->int         {             int size = (int)p.size(), ans = 0;             for (int i = 0; i < size; ++i)             {                 if (p[i] == q[i]) continue;                 int t = i+1;                 while (t < size && p[t] != q[i]) t++;                 ans += t-i;                 for (int j = t; j > i; --j)                     p[j] = p[j-1];             }             return ans;         };         return calc();     }          void work(ll m, vector<int> &p)     {         while (m)         {             p.push_back(m%10);             m /= 10;         }         reverse(p.begin(), p.end());     } };

今天 09:53:46 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 给定一个整数,牛牛每次可以交换中相邻的两位数。牛牛想将变为一个大于等于的最小整数(无前导零,即初始为时,结果不为)。牛牛想知道他最少交换多少次可以让变为大于等于 的最小整数呢。如有,牛牛仅交换一次使得变为大于等于 的最小整数。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情