如果以随机顺序给出数组,则必须输出转换为循环排序数组所需的最小交换数.
例如,给出的阵列是3 5 4 2 1
所以第一次交换将是5 < - > 4结果:3 4 5 2 1秒交换将是2 < - > 1结果:3 4 5 1 2(最终)
输出:2
我无法理解这个问题背后的逻辑.
添加更多: 只能在相邻元素之间进行交换,数字在1到N之间
我的代码中目前有一个 JSON 模式
{
'type' => 'object', 'required' => true, 'additionalProperties' => false,
'properties' => {
'variables' => {
'type' => 'array', 'required' => true,
'items' => {
'type' => 'object', 'required' => true, 'additionalProperties' => false,
'properties' => {
'variable' => { 'type' => 'string', 'required' => true },
'value' => { 'required' => true }
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图在值字段上进行一些额外的验证。例如,如果是字符串,则长度不应超过 64 个字符,如果是整数,则值应在整数限制内。我应该如何定义这个模式。