我不明白为什么测试套件4:
A =[0 1 1 0 2 2 0 1 1 1 0];
Y_correct = [1 1];
I expect y_correct = [1 1 1]
其想法似乎是返回在最长时间运行中出现的元素,或者在平局情况下返回所有此类元素。在情况4中,有两次最长的运行,都带有元素1。
谢谢蒂姆的解释。因此,由于向量[1 1 1]在测试4中出现了两次,其惟一值为1,因此结果必须是惟一值>[1 1]的两倍。好的,再次感谢
不错的
当我计算它重复的次数时,我得到了这个数组。但是,有没有人能给我一个命令,让我用左边的数字拉出最大值?任何建议吗?右上方列中的第一个值并不重要,因为它应该总是1。我尝试max命令,它只显示最大值3…:
1 0
1 2
1 3
2 1
2 2
2 3
3个1
3 - 2
3个3
不错的
伟大的问题。谢谢你!
好一个
不错的问题
有没有一种方法可以在不提交的情况下测试输出?
我真的很喜欢这个
这是有趣的。
这个问题应该指定,如果相同的数字重复最长的连续数字一次以上,它必须在输出中重复。
伟大的东西!
我喜欢这个问题,它很有趣
应该更具体的预期输出,解决检查中列出的期望输出的数字顺序也发生在序列,如果相同数量的重复序列(最大再次运行)需要重复的输出。这两个标准都破坏了我的解决方案。
这是我自己解决的第一个matlab问题,我很兴奋:)
好问题!
老实说,虽然我解决了这个问题,但我不太明白如何改进我的代码。我的意思是,解的顶部对我来说很奇怪,为什么这么金宝搏官方网站做,尺寸就变小了呢?
嗨昱树何,
在Matlab Cody中,解的大小由各种因素计算,其中之一是所使用的变量的数量。然而,这个问题(以及许多其他问题)的主要解决方案利用regexp来获得较小的解决方案大小。之所以这么做是因为之前的评分是基于你的解决方案大小,而现在这个大小已经被固定为10分。
希望这个有帮助。
我一直在努力解决这个问题,然后看到了你的解决方案。非常优雅。
想知道一个简单的方法
有趣的
我真的很喜欢你的解决方案!
你好,我看不懂代码,
:
c = 1: l
为r = c: l
如果一个(c) = =(右)
频率(c) =频率(c) + 1
其他的
打破
结束
结束
结束
为什么不c = 1, r = 5满足”(c) = = (r)”,在(c) = =(右)
非常感谢
上面提到的问题有什么问题吗
l =长度(a);
频率= 0(1升);
c = 1: l
为r = c: l
如果一个(c) = =(右)
频率(c) =频率(c) + 1;
其他的
打破
结束
结束
结束
M = max(频率);
idx =找到(频率= = M);
val = (idx);
函数val =龙润(一个)
b = 0(大小(a));
老= (1);
问= 0;
For idx = 1:length(a)
If a(idx) == old . (If a(idx) == old .
CNT = CNT +1;
其他的
老= (idx);
问= 1;
结束
b (idx) =问;
结束
bmax = max (b);
val = a (b = = bmax);
结束
函数val =龙润(一个)
a_len =长度(a);%计算a的长度
c = 1 (a_len, 1);%初始化对应位置的连续次数
num_a = 1:(a_len-1)
n_val = 1;
next_a = (num_a + 1): a_len
如果这个数等于下面的数,则n_val+1,并进入下一个循环
n_val = n_val + 1;
c (num_a) = n_val;
其他的
c (num_a) = n_val;%如果这个数字不等于下面的数字,将当前的n_val赋给相应的连续次数,然后跳出内部的for循环
打破
结束
结束
结束
a_conti = max (c);%查找c数组中连续出现的最大次数
max_location =找到(c = = a_conti);%表示连续最大次数的位置
val = (max_location);找出a中对应的位置
结束
我无法理解
测试1是错误!
y_correct = (1 - 2);
这是我见过的最好的解决办法。????
为什么测试4是这样的呢
这是个棘手的问题,但我很喜欢解决它。
棘手……但享受它。
函数val =龙润(一个)
a_len =长度(a);%计算一个的长度
c = 1 (a_len, 1);%初始化对应位置的连续次数
num_a = 1:(a_len-1)
n_val = 1;
next_a = (num_a + 1): a_len
如果一个(num_a) = = (next_a) %如果这个数字和后面的数字相等,则n_val + 1,并进行下一次循环
n_val = n_val + 1;
c (num_a) = n_val;
其他的
c (num_a) = n_val;%如果这个数字和后面数字不等,则把当前的n_val赋值给对应数字的连续次数,并跳出内层为循环
打破
结束
结束
结束
a_conti = max (c);%找数出c组中最大的连续次数
max_location =找到(c = = a_conti);%对应最大连续次数的位置
val = (max_location);%找出对应在一个中的位置
结束
测试1和4是错误的
@Piero Cimule
请问您对这种方法有何评论?作为一个初学者,我不太可能有如此简洁的代码。欢迎您在这里详细说明,或通过我的电子邮件地址zasevzasev42@gmail.com
很简洁的代码。这是我在比赛中看到的最好的一个。@Piero Cimule
@Jovan Krunic:
%
%找到(vertcat (diff ((:)), 1))
% val = (ans (diff (ans) = = max (diff (ans))))
%
方法是:
求向量各元素之间的差值
%连续零的平均值有相同的值运行
%得到这个向量的非零元素的下标
%得到这些索引的差值(这是对连续零运行的长度的度量,即删除零所产生的“间隙”)
请注意,为了使此方法适用于以最长运行时间开始或结束的向量,我们在第一个差分向量的开始和结束处加1
%从最后的结果中获取最大值,即最大序列长度
%得到这些最大值的下标,也就是具有这个最大长度的运行的第一个下标
%注意,最后的结果总是一个列向量
%从原始向量获取最大长度的运行的第一个元素的值
%注意,如果原始向量是行向量,那么结果将是行向量,当它是列向量时,结果将是列向量,
%,按问题描述中的要求
函数val =龙润(一个)
val = [];
如果长度(a) > 0
% a(:)将a转换为列向量
a_as_column_vector = (:);
a元素之间的差
diff_a = diff (a_as_column_vector);
用1括起来的元素之间的差异%(确保第一个和最后一个元素是非零的)
Vertcat_1_diff_a_1 = vertcat(1, diff_a, 1);
vertcat_1_diff_a_1的%非零元素
find_vertcat_1_diff_a_1 =找到(vertcat_1_diff_a_1);
非零索引之间的差等于连续数的长度
lengts_of_runs_of_consecutive_numbers = diff (find_vertcat_1_diff_a_1);
%将最大长度为1的元素设置为0,其他元素设置为0—注意,由于差值导致的索引移位通过在向量前面加1来补偿
Indices_of_elements_that_have_max_length_run = lengts_of_runs_of_consecutive_numbers == max(lengts_of_runs_of_consecutive_numbers);
indices_of_first_elements_of_longest_run_of_consecutive_numbers = find_vertcat_1_diff_a_1 (indices_of_elements_that_have_max_length_run);
values_of_first_elements_of_longest_run_of_consecutive_numbers = (indices_of_first_elements_of_longest_run_of_consecutive_numbers);
val = values_of_first_elements_of_longest_run_of_consecutive_numbers;
结束
结束
你能帮我查一下吗?
(ra, ca) = (a)大小;
如果ra > ca
= ';
结束
j = 1;
V = ((1,1); 1);
我= 2:尺寸(2)
X = a (1,);
如果V (j) = = X
V (j) = (2, j) + 1;
其他的
j = + 1;
V (j) = X;
V (j) = (2, j) + 1;
结束
结束
: val = V (V (2) = = max (V (2:)))
如果ra > ca
val = val”;
结束
在其他传统编程语言中,你还能做些什么呢?
它的好,
这并不容易……
非常聪明!
解决14149
解决350
“Low: High - Low: High - Turn around”——创建子索引向量
解决384
解决414
解决782