gpt4 book ai didi

arrays - 查找最常连续重复的数字

转载 作者:行者123 更新时间:2023-12-02 09:05:32 25 4
gpt4 key购买 nike

以这个数组为例:a = [1 2 2 2 1 3 2 1 4 4 4 5 1]

我想找到一种方法来检查哪些数字最常连续重复。在此示例中,输出应为 [2 4],因为 2 和 4 都连续重复 3 次。另一个例子:a = [1 1 2 3 1 1 5]

这应该返回 [1 1],因为存在 1 重复两次的单独实例。

这是我的简单代码。我知道有更好的方法来做到这一点:

function val=longrun(a)

b = a(:)';
b = [b, max(b)+1];
val = [];
sum = 1;
max_occ = 0;
for i = 1:max(size(b))
q = b(i);
for j = i:size(b,2)
if (q == b(j))
sum = sum + 1;
else
if (sum > max_occ)
max_occ = sum;
val = [];
val = [val, q];
elseif (max_occ == sum)
val = [val, q];
end
sum = 1;
break;
end
end
end
if (size(a,2) == 1)
val = val'
end
end

最佳答案

这是一种矢量化方式:

a = [1 2 2 2 1 3 2 1 4 4 4 5 1]; % input data
t = cumsum([true logical(diff(a))]); % assign a label to each run of equal values
[~, n, z] = mode(t); % maximum run length and corresponding labels
result = a(ismember(t,z{1})); % build result with repeated values
result = result(1:n:end); % remove repetitions

关于arrays - 查找最常连续重复的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58920322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com