嵌入式转行到网站开发,wordpress 做大型网站,wordpress可以仿任何站,网站后台邮箱配置我真的怀疑他是不是难度等级评错了#xff0c;因为感觉没到中级#xff0c;总之先看题吧
给定一个非负整数#xff0c;你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。示例 2 :
输入: 9973
输出:…我真的怀疑他是不是难度等级评错了因为感觉没到中级总之先看题吧
给定一个非负整数你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。示例 2 :
输入: 9973
输出: 9973
解释: 不需要交换。注意:
给定数字的范围是 [0, 10^8]
这个题只要你思路对了很快就能写出来
我们要至多可以交换一次数字中的任意两位得到的最大值那肯定是把大的数字放在高位小的数字放在低位所以思路就是从高位向低位历遍发现某位的数字比右边的数字最大值小就交换位置然后返回值。
4123-4321 因为1的右边最大是3所以1和3交换位置 int maximumSwap(int num) { char* p (char*)calloc(10, sizeof(char)); int i 0; int sunum; while (num) { p[i] num % 10; num / 10; } for (int j i - 1; j 0; j--) { int max j; for (int x j - 1; x 0; x--) if (p[max] p[x]) max x; else if (p[max] p[x] max ! j) max x; if (max ! j) { int a p[j]; p[j] p[max]; p[max] a; int sum 0; while (i-10) { sum sum * 10 p[i-1]; i--; } return sum; } } return su; } AC