从整数中删除重复数字组中的一个重复数字以获得最大值

时间:2016-03-02 02:23:41

标签: algorithm

我在考试中遇到了问题。给出一组带有重复数字的数字,如何删除一个重复的数字以获得最大值。 例如:112233删除任何一个数字,即:删除一个1或一个2或一个3并返回最大数量。如何有效地完成。一个是蛮力。

3 个答案:

答案 0 :(得分:0)

您必须删除第一个重复的数字,后面跟一个更大的数字。这样,您可以增加可以增加的最重要数字,从而产生最大值。

答案 1 :(得分:-1)

  

从整数中删除重复数字组中的一个重复数字以获得最大值

为确保最大值,我们从左侧删除最小的重复数字。我们不必进行蛮力。

在112233上测试:

12233    //remove 1 (remove smallest from left) [formed largest]
11233    //remove 2
11223    //remove 3

在332211上测试:

33221    //remove 1 (remove smallest from left) [formed largest]
33211    //remove 2
32211    //remove 3

在221133上测试:

22133   //remove 1 (remove smallest from left) [formed largest]
21133   //remove 2
22113   //remove 3

答案 2 :(得分:-1)

  1. 从左到右遍历。找到第一个重复的数字,后跟一个更大的数字。如果您能找到,请将其删除并返回号码(例如:122334)

  2. 从右到左遍历。找到第一个重复的数字,后跟一个较小的数字。如果您找到一个,请将其删除并返回该号码。例如,在455233中,当我们从右向左移动时,“2”是一个较小的数字,后面跟着重复的数字“3”。

  3. 找到最后一个重复的数字,删除它并返回数字(例如:433221)

  4. 如果没有重复的数字,请返回数字

  5. 几个例子:

    122334 - 在步骤1下跌。删除2以获得最大数字(12334)

    455233 - 在步骤2下跌。删除2以获得最大数字(45533)

    12553664 - 在步骤2下跌。删除6以获得最大数字(1255364)

    433221 - 在步骤3下跌。删除2以获得最大数字(43321)

    332211 - 在步骤3下跌。删除1以获得最大数字(33221)

相关问题