我从Codility的代码测试练习中得到以下问题:
给出了由N个不同整数组成的零索引数组A. 该数组包含[1 ..(N + 1)]范围内的整数,这意味着只缺少一个元素.
你的目标是找到缺少的元素.
写一个函数:
class Solution {public int solution(int [] A); }
在给定零索引数组A的情况下,返回缺少元素的值.
例如,给定数组A,使得:
A [0] = 2 A [1] = 3 A [2] = 1 A [3] = 5
函数应该返回4,因为它是缺少的元素.
假使,假设:
N是[0..100,000]范围内的整数; A的元素都是截然不同的; 数组A的每个元素是[1 ..(N + 1)]范围内的整数.
复杂:
预期的最坏情况时间复杂度是O(N); 预期的最坏情况空间复杂度为O(1),超出输入存储(不计算输入参数所需的存储空间).
可以修改输入数组的元素.
我的方法是将给定数组转换为ArrayList,使用ArrayList查找数组中的最低和最高值,并从最低到最高迭代所有可能的值,然后返回缺失值.
这解决了示例问题,但我的问题似乎是在给定数组的以下条件下我无法得到正确的答案:
"空列表和单个元素"
"缺少第一个或最后一个元素"
"单一元素"
"两个要素"
我做错了什么,解决这个问题的正确方法是什么?
1.为什么while (<$filehandle>)无法迭代遍历文件,但它不会在没有操作数组本身的情况下迭代列表或数组(比如使用while ($_ = shift @array){print $_}?这是怎么发生的?
2.如何while ($var = @array){print $var}设法迭代整个阵列?不应该$var只获取索引的数量@array并返回该值(因此创建一个无限循环)?
从我的理解中while()读取语句和循环的条件性,只要它发现它是真的.我发现令人困惑的是它在文件句柄,列表等方面的行为.
请帮我理解更多,while()因为我发现这个操作员有时会很困惑.
我有以下问题:
为您提供了N个计数器,这些计数器最初设置为0,并且对其有两种可能的操作:
increase(X) ? counter X is increased by 1,
max counter ? all counters are set to the maximum value of any counter.
Run Code Online (Sandbox Code Playgroud)
给出了一个由M个整数组成的非空零索引数组A。该数组表示连续的操作:
if A[K] = X, such that 1 ? X ? N, then operation K is increase(X),
if A[K] = N + 1 then operation K is max counter.
Run Code Online (Sandbox Code Playgroud)
例如,给定整数N = 5且数组A使得:
A[0] = 3
A[1] = 4
A[2] = 4
A[3] = 6
A[4] = 1
A[5] = 4
A[6] = 4
Run Code Online (Sandbox Code Playgroud)
每个连续操作后的计数器值将为:
(0, 0, …Run Code Online (Sandbox Code Playgroud) 我正在Swing中实现一个程序,我在Swing中阅读了Nirmal对这种模式的实现,这似乎表明了对整个"职责分离"概念的相当优雅的处理.
但是,由于我正在开发一个比Nirml发布的更复杂的程序,它由一个JFrame容器组成,我寻求指导如何正确实现MVC.
我的程序将由子容器等组成.我很好奇Controller应该如何实现定义和分配View的所有侦听器的逻辑?或者如果为每个View组件定义侦听器的控制器是否实用?
看来我在View的顶级容器中需要一个方法来允许Controller调用视图来向相关组件添加一个Listener?所以我需要一个方法链,每个方法都将侦听器从顶层容器传递到持有组件的直接容器.最后用容器调用addActionListener()就可以了.
这是在MVC中处理侦听器的正确方法吗?
是否在MVC中强制控制View中每个组件的所有侦听器,或者是一种有用的实践?这也意味着我在顶级容器(View)中创建方法,以便为Controller提供一种方法,将侦听器分配给子容器中的每个组件?