<分区>
在不使用数组的情况下交换给定数字的交替数字,例如:
Input: 54687
Output: 45867
在不使用数组的情况下解决这个问题的正确算法是什么?我在一次面试中被问到这个问题,但仍然无法弄清楚正确的做法。
<分区>
在不使用数组的情况下交换给定数字的交替数字,例如:
Input: 54687
Output: 45867
在不使用数组的情况下解决这个问题的正确算法是什么?我在一次面试中被问到这个问题,但仍然无法弄清楚正确的做法。
最佳答案
如果您不是数论学家,您可以通过检查这两个数字之间的差异来取得一些进展(如果我的人力资源部门坚持要我问候选人这个问题,我想这就是我对他们的期望去做)。如果你是一名数论学家,那么答案很快就会从你的脑海中蹦出来。它是,对于一个正数;
前两位数字在 1000 位(例如,a = 1000
)。
前两位数字相差 -1
(b = -1
说;注意符号约定)。
您需要将9 * a * b
添加到Input
。即 -9000
。交换前两位数字。然后我们继续:
接下来的两位数在 10 位 (a = 10
)。
数字相差+2
(b = 2
)
同样,您添加 9 * a * b
,即 +180
。
一个强大的候选人会指出 Input
可能太大而不适合 int
,这取决于您的平台。
请注意,您通过重复整数除以 10 直到达到 0 来获得最高有效数字的位置。
关于c - 在不使用数组的情况下交换给定数字的备用数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50701362/