晋江网站建设qzdzi,濮阳信息网,哪里可以做虚拟货币网站,如何添加网站 ico给你一个整数 num 。你知道 Danny Mittal 会偷偷将 0 到 9 中的一个数字 替换 成另一个数字。
请你返回将 num 中 恰好一个 数字进行替换后#xff0c;得到的最大值和最小值的差为多少。
注意#xff1a;
当 Danny 将一个数字 d1 替换成另一个数字 d2 时#xff0c;Danny…给你一个整数 num 。你知道 Danny Mittal 会偷偷将 0 到 9 中的一个数字 替换 成另一个数字。
请你返回将 num 中 恰好一个 数字进行替换后得到的最大值和最小值的差为多少。
注意
当 Danny 将一个数字 d1 替换成另一个数字 d2 时Danny 需要将 nums 中所有 d1 都替换成 d2 。Danny 可以将一个数字替换成它自己也就是说 num 可以不变。Danny 可以将数字分别替换成两个不同的数字分别得到最大值和最小值。替换后得到的数字可以包含前导 0 。Danny Mittal 获得周赛 326 前 10 名让我们恭喜他。
示例 1
输入num 11891
输出99009
解释
为了得到最大值我们将数字 1 替换成数字 9 得到 99899 。
为了得到最小值我们将数字 1 替换成数字 0 得到 890 。
两个数字的差值为 99009 。示例 2
输入num 90
输出99
解释
可以得到的最大值是 99将 0 替换成 9最小值是 0将 9 替换成 0。
所以我们得到 99 。提示
1 num 10^8
分析用一个数组存储 num 的每位数字。之后从高位向低位检查将第一个不是 9 的数字都改成 9得到最大值将第一个不是 0 的数字改为 0得到最小值。最后相减得到答案。
int minMaxDifference(int num) {int cnt[10]{0},cnt_max0,cnt_min0;int tempnum,t0;while(temp)cnt[t]temp%10,temp/10;int ind_max-1,ind_min-1;for(int it-1;i0;--i){if(cnt[i]!9ind_max-1)ind_maxcnt[i];if(cnt[i]!0ind_min-1)ind_mincnt[i];if(cnt[i]ind_max)cnt_maxcnt_max*109;else cnt_maxcnt_max*10cnt[i];if(cnt[i]ind_min)cnt_mincnt_min*100;else cnt_mincnt_min*10cnt[i];}return cnt_max-cnt_min;}