昨天我在C ++上进行了一次面试测试,我不得不在下面的代码中找到错误。
算法接收输入以非递减顺序和整数K排序的整数向量。如果向量仅包含1和k之间的所有数字至少一次,则算法返回true,否则返回false: / p>
([1,1,2,3,3,4],4) - >真
([1,1,3],3) - >假
这是实施:
router.post('/add')
我无法找到错误/错误。有人能告诉我这段代码中的bug是什么?
答案 0 :(得分:0)
最终检查应该是OR,因为任何一个条件都是返回false的充分理由。例如,([0,1,2],2)将在代码现在通过。
此外,这可能是您的错字,但k参数被引用为K(错误的情况)。
答案 1 :(得分:0)
您只需要在 if 条件下进行更改
将第一个条件更改为
select
m1.Id m1_Id,m2.Id m2_Id,m1.RoomId,
case
when m1.DataForm <= m2.DataForm then m2.DataForm
else m1.DataForm
end collision_start,
case
when m1.DataForm <= m2.DataForm then m1.DataTo
else m2.DataTo
end collision_end
from Meetings m1
inner join Meetings m2 on m1.Id<>m2.Id and m1.RoomId=m2.RoomId
where
(m1.DataForm <= m2.DataForm and m2.DataForm < m1.DataTo)
or
(m2.DataForm <= m1.DataForm and m1.DataForm < m2.DataTo)
将 2nd if 条件改为
if ((A[i] != A[i+1]) && (A[i] + 1 != A[i+1]) {
return false;
}