将两个数字替换为给定数组中介于两个之间的单个数字
replacing two numbers by a single number which is in-between two in an given array?
问题是我们有一个长度为 N 的数组 A 和一个随机数 X。
从数组 A 中选择任意两个数字,例如 a,b,并将它们替换为表示 Y 的单个数字,以便 a<=y<=b。
在 N-1 操作之后,数组 A 中应该只剩下一个数字。检查我们是否可以得到这个数字?
我认为它的递归问题,但我无法接近?请告诉如何接近。
假设数组是a1,a2,..,排序顺序。所以最小值是 a1,最大值是 an;
you may choose a1,a2 and replace with a1.
Then after choose a1, a3(as a2 is gone now) and replace by a1.
.
Similarly you may choose a1, an-1 {a2 to an-2 is gone now} and replace by a1.
Now you are left with 2 number a1 and an. So a1<=x<=an, ans is yes otherwise two.
这是贪婪的方法,所以需要一个证明。我要留给你。
只是一个旁注:回避和迭代具有相同的数学能力。只是它们有不同的可视化效果。
相关文章:
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 如何计算数组中元素的位数?(不是数组的长度),并计算其数字的总和
- 数组/c++中的大量数字
- 遍历并行数组以确定C++中的最大数字
- 整数区间(或 int 数组)中每个数字的出现次数
- 如何在 C++ 中将文件中的逗号分隔数字读取到数组中?
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- 遇到此问题时遇到困难:允许用户输入数组的值并使用 for,而循环也输出输入的最大数字
- 获取 2D 数组 c++ 中的所有数字对
- 为什么使用数组元素查找最大数字的程序不起作用?
- 如何从向量或数组中选择最常见的数字?(前五名)C++
- 如何从保存在 Java 中C++的字节数组中读取数字?
- 以十为基数的数字到布尔数组,该数组要求二进制/基数为 2 的数字
- C++ 检查结果数组中有多少次数字
- 如何在不使用 C++ 中的数组或函数的情况下查找 N 位数字的所有排列
- 如何在C++中有效地将数字值重新分配给字符数组
- 查找数组中的最小数字
- 查找数组中重复(重复)数字的索引
- 我必须找到给定数组中所有数字的周期,就像有很多解决方案,但数组的大小是 10^5
- 类、数字/数组或对象中的对象