问题的评论
-
27日评论
我不明白为什么测试套件4:
A =[0 1 1 1 0 2 2 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分。
希望这能有所帮助。
虽然花了点时间,但总的来说是个好问题。我在上一个测试用例中卡住了。
好问题
嗯,我不认为测试4中的断言是直观正确的。这个问题要求输入向量中连续重复次数最长的数。因此,可以有多个具有最长运行时间的数字(大小相同),但如果所有这些数字都相同,如[1 1 2 11 1],那么答案肯定是“1”,而不是“1和1”。
我只能想象,这就是实现最终产生的结果,而不是修复实现以适应问题,引入测试是为了检查准确的输出;)
这很好,在现实生活中,你总是有客户说他们想要什么,当你推出它时,他们的意思是不同的,这只是让我感到困扰,我的好解决方案因为这个而不管用
这个问题特别指出必须支持列向量和行向量,但没有对此进行测试。万博1manbetx我建议至少改变其中一个测试以使用列向量。
或者可以添加一个测试,断言' longrun(a) ==转置(longrun(转置(a))) '
好一个
不错的
棘手的!
解决方案的评论
-
1评论
如果没有函数求解,则相对比较棘手
-
1评论
这道题的测试非常不科学。。。
-
1评论
困难
-
1评论
花了一段时间,在最后一个测试用例上卡住了。
-
1评论
我一直在努力解决这个问题,然后看到了你的解决方案。非常优雅。
-
1评论
想知道一个简单的方法
-
1评论
有趣的
-
1评论
我真的很喜欢你的解决方案!
-
1评论
你好,我理解代码有问题,
:
c = 1: l
为r = c: l
如果一个(c) = =(右)
频率(c) =频率(c) + 1
其他的
打破
结束
结束
结束
为什么不c = 1, r = 5满足”(c) = = (r)”,在(c) = =(右)
非常感谢
-
3评论
嘿,上面提到的问题有问题吗
l =长度(a);
频率= 0(1升);
c = 1: l
为r = c: l
如果一个(c) = =(右)
频率(c) =频率(c) + 1;
其他的
打破
结束
结束
结束
M = max(频率);
idx =找到(频率= = M);
val = (idx);
函数val =龙润(一个)
B = 0(大小(a));
Old = a(1);
CNT = 0;
对于idx = 1:长度(a)
如果a(idx) == old
CNT = CNT +1;
其他的
Old = a(idx);
CNT = 1;
结束
b (idx) =问;
结束
Bmax = max(b);
Val = a(b==bmax);
结束
-
1评论
函数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
if a(num_a)==a(next_a) %如果这个数字等于下面的数字,那么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评论
测试1出错!
Y_correct =[1 2];
-
2的评论
-
1评论
为什么测试4是这样的
-
1评论
很棘手,但我很喜欢解决它。
-
1评论
棘手……但我很享受。
-
1评论
函数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
如果一个(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);%找出对应在a中的位置
结束
-
1评论
测试1和4是错误的
-
3评论
@Piero Cimule
你能评价一下这个方法吗?作为Matlab初学者,我不太可能有这样简洁的代码。欢迎您在这里或通过我的电子邮件地址zasevzasev42@gmail.com详细说明
非常简洁的代码。是我迄今为止在比赛中看到的最好的之一。@Piero Cimule
@Jovan Krunic:
%
%找到(vertcat (diff ((:)), 1))
% val = (ans (diff (ans) = = max (diff (ans))))
%
方法是:%
找出向量元素之间的差异
%连续0表示有一组相同的值
%表示该向量中所有不为0的元素的下标
%得到这些指标的差异(这是连续0的运行长度的度量,由删除零产生的“差距”)
注意,为了使这种方法适用于以最长运行周期开始或结束的向量,我们在第一个差分向量的开始和结束处加一个1
从最后一个结果中获取最大值,即最大序列长度
%得到这些Max值的下标,也就是说,具有这个Max长度的运行的第一个下标
注意,最后一个结果总是一个列向量
%从原始向量中获取长度最大的运行的第一个元素的值
注意,如果原始向量是行向量,结果将是行向量,如果它是列向量,结果将是列向量,
%,这是问题描述中要求的
函数val =龙润(一个)
Val = [];
如果length(a) > 0
% a(:)将a转换为列向量
A_as_column_vector = a(:);
元素之间的%差异
Diff_a = diff(a_as_column_vector);
包含在one中的a元素之间的差异%(以确保第一个和最后一个元素不为零)
Vertcat_1_diff_a_1 = vertcat(1, diff_a, 1);
vertcat_1_diff_a_1的%非零元素
find(vertcat_1_diff_a_1);
非零索引之间的差值等于连续数的长度
Lengts_of_runs_of_consecutive_numbers = diff(find_vertcat_1_diff_a_1);
将最大长度为1的元素设置为0 -注意由于diff导致的索引移位是通过在向量的前面加上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 = a(indices_of_first_elements_of_longest_run_of_consecutive_numbers);
Val = values_of_first_elements_of_longest_run_of_consecutive_numbers;
结束
结束
-
1评论
你能帮我检查一下这个吗?
(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”;
结束
-
1评论
在其他任何传统编程语言中,您还能如何解决?
-
1评论
它的好,
-
1评论
这并不容易……
-
1评论
非常聪明!