我在考试中遇到了问题。给出一组带有重复数字的数字,如何删除一个重复的数字以获得最大值。 例如:112233删除任何一个数字,即:删除一个1或一个2或一个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)
从左到右遍历。找到第一个重复的数字,后跟一个更大的数字。如果您能找到,请将其删除并返回号码(例如:122334)
从右到左遍历。找到第一个重复的数字,后跟一个较小的数字。如果您找到一个,请将其删除并返回该号码。例如,在455233中,当我们从右向左移动时,“2”是一个较小的数字,后面跟着重复的数字“3”。
找到最后一个重复的数字,删除它并返回数字(例如:433221)
如果没有重复的数字,请返回数字
几个例子:
122334 - 在步骤1下跌。删除2以获得最大数字(12334)
455233 - 在步骤2下跌。删除2以获得最大数字(45533)
12553664 - 在步骤2下跌。删除6以获得最大数字(1255364)
433221 - 在步骤3下跌。删除2以获得最大数字(43321)
332211 - 在步骤3下跌。删除1以获得最大数字(33221)