在 C++ 中查找具有相同数字集的下一个更大的数字!
在这个问题中,我们给定了一个元素N。我们需要找到下一个具有相同数字集的更大数字。我们需要找到大于N的具有相同数字的最小数字。
让我们举个例子来理解这个问题,
输入
N = "92534"输出结果
92543
解决方法
找到下一个更大元素的问题的简单解决方案是通过以下方法-
从最低有效位到最高有效位遍历数字。并在当前元素小于最后一个元素时停止。
在此之后搜索剩余数组中的最小元素。并找到最小的数字并将其与数字交换。
然后对剩余的子数组进行排序并返回输出。
程序来说明我们的解决方案的工作,
示例
#include#include #include using namespace std; void findNextGreater(char number[], int n) { int i, j; for (i = n-1; i > 0; i--) if (number[i] > number[i-1]) break; if (i==0) { cout<<"Next number is not possible"; return; } int x = number[i-1], smallest = i; for (j = i+1; j < n; j++) if (number[j] > x && number[j] < number[smallest]) smallest = j; char temp = number[smallest]; number[smallest] = number[i-1]; number[i-1] = temp; sort(number + i, number + n); cout< 输出结果 下一个具有相同数字集的数字是 92543