Mar*_*ria 2 java arrays algorithm mathematical-optimization
今天面试了,被问到一个问题,我都听不懂。
问题:
给定一个
array由整数组成的。获取至少
在相等的元素array。在计算时,您可以进行以下两种操作
取数组的最小元素之一并将其值加一(更正式地说,如果 的最小值为 ,则选择这样的索引 = 并设置 :=+1);
取数组的最大元素之一并将其值减一(更正式地说,如果 的最大值为 ,则选择这样的索引 = 并设置 :=?1)。
计算获得
数组中至少相等元素所需的最小移动次数。
任何人都可以帮助我理解,实际问题是什么,以便我可以编写代码?
直接回答您的问题,即“帮助我理解问题”:
例如,这是您的数组:
{1,2,5,7,8,3}
Run Code Online (Sandbox Code Playgroud)
现在,您只能执行这两个操作:
{2,2,5,7,8,3} // <-- increased 1
Run Code Online (Sandbox Code Playgroud)
{2,2,5,7,7,3} // <-- decreased 8
Run Code Online (Sandbox Code Playgroud)
现在的问题是:使这个数组包含k相同数字的最小移动次数是多少?
因此,如果k = 3数组与上述类似,那么其中一种解决方案是运行操作1三次:
{1,2,5,7,8,3}
Run Code Online (Sandbox Code Playgroud)
{2,2,5,7,8,3} // <-- `1` changed to `2`
Run Code Online (Sandbox Code Playgroud)
{3,2,5,7,8,3} // <-- `2` changed to `3`
Run Code Online (Sandbox Code Playgroud)
{3,3,5,7,8,3} // <-- `2` changed to `3`
Run Code Online (Sandbox Code Playgroud)
所以结果数组将是:
{3,3,5,7,8,3}
Run Code Online (Sandbox Code Playgroud)
你现在明白问题了吗?
| 归档时间: |
|
| 查看次数: |
375 次 |
| 最近记录: |