- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个向量,应该包含从 00 到 11 的 n 个序列
A = [00;01;02;03;04;05;06;07;08;09;10;11;00;01;02;03;04;05;06;07;08;09;10;11]
我想检查序列“00 - 11”是否始终得到遵守(没有缺失值)。
例如如果
A =[00;01;02; 04;05;06;07;08;09;10;11;00;01;02;03;04;05;06;07;08;09;10;11]
(第 3 个位置缺少 03)对于每个缺失值,我想在另一个向量中返回此信息
missing=
[value_1,position_1;
value_2, position_2;
etc, etc]
你能帮帮我吗?
最佳答案
当然我们知道最后一个元素必须是 11,所以我们已经可以检查这一点并让我们的生活更容易测试所有前面的元素。我们确保 A
以 11 结尾,因此“逐元素更改”方法(如下)将是有效的。请注意,一开始也是如此,但在那里更改 A
会弄乱索引,所以我们最好稍后再处理。
missing = [];
if A(end) ~= 11
missing = [missing; 11, length(A) + 1];
A = [A, 11];
end
然后我们可以计算从一个元素到另一个元素的变化 dA = A(2:end) - A(1:end-1);
,并确定间隙位置 idx_gap =查找((dA~=1) & (dA~=-11));
.现在我们需要扩展所有缺失的索引和期望值,使用 ev
作为期望值。 ev
可以从之前的值中得到,如
for k = 1 : length(idx_gap)
ev = A(idx_gap(k));
现在,要填充的元素个数是该位置的变化dA
减一(因为一表示没有间隙)。请注意,如果段之间的边界处存在间隙,这可以覆盖,因此我们使用模数。
for n = 1 : mod(dA(idx_gap(k)) - 1, 12)
ev = mod(ev + 1, 12);
missing = [missing; ev, idx_gap(k) + 1];
end
end
作为测试,考虑 A = [5 6 7 8 9 10 3 4 5 6 7 8 9 10 11 0 1 2 3 4 6 7 8]。在这种情况下,从一开始的特殊初始化就会触发,已经记住丢失的 11,并将 A 更改为 [5 6 ... 7 8 11]。 missing
then will yield
11 24 % recognizes improper termination of A.
11 7
0 7 % properly handles wrap-over here.
1 7
2 7
5 21 % recognizes single element as missing.
9 24
10 24
这应该是您所期望的。现在缺少的仍然是 A
的开头,所以假设 missing = [0 : A(1) - 1, 1; missing];
完成列表。
关于algorithm - 识别重复序列中的缺口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19710855/
我刚刚开始使用 flutter,我想创建一个带有 FAB 和缺口的底部应用栏。 我的脚手架代码如下: return Scaffold( appBar: AppBar( ti
我已经使用 swift 在我的应用程序顶部实现了一个 pageViewIndicator。我一直在我个人的 iPhone 上测试它,它一直有效,但是当使用 iPhone X 模拟器时,我注意到它消失在
我有一个 ImageView ,它位于 View 顶部的中央。 这在所有设备上看起来都不错,但 iPhone X 除外,因为 iPhone X 的缺口会裁剪图像。 有没有一种方法可以从屏幕的凹口而不是
我对此很陌生,如果这是一个愚蠢的问题,我很抱歉。如何让我的 Xamarin.Forms 应用在适用时在状态栏或缺口下方启动?我试过使用 NavigationPage ,但随后它开始在屏幕顶部下方磨损。
我是一名优秀的程序员,十分优秀!