CodCrotion Javascript解决方案:空数组返回错误
我在试着用密码解。我的解决方案通过了所有测试,只有一个参数为空数组和旋转1。我不知怎么搞不懂如何解决这个问题。有人能把我推到正确的方向吗?除了为空数组检查编写特定的CodCrotion Javascript解决方案:空数组返回错误,javascript,arrays,for-loop,rotation,Javascript,Arrays,For Loop,Rotation,我在试着用密码解。我的解决方案通过了所有测试,只有一个参数为空数组和旋转1。我不知怎么搞不懂如何解决这个问题。有人能把我推到正确的方向吗?除了为空数组检查编写特定的if子句之外。我想不出一个更优雅的解决办法 function solution(A, K) { for (i=0; i<K; i++) { A.unshift(A.pop()); } return A; } 函数解(A,K) { 对于(i=0;i试试这个: let solutio
if
子句之外。我想不出一个更优雅的解决办法
function solution(A, K)
{
for (i=0; i<K; i++)
{
A.unshift(A.pop());
}
return A;
}
函数解(A,K)
{
对于(i=0;i试试这个:
let solution = (A, K) => {
for (i=0; i<K; i++){
A.unshift(A.pop());
}
return A[0] != undefined ? A : [];
}
let solution=(A,K)=>{
对于(i=0;i试试这个:
let solution = (A, K) => {
for (i=0; i<K; i++){
A.unshift(A.pop());
}
return A[0] != undefined ? A : [];
}
let solution=(A,K)=>{
对于(i=0;i一种解决方案是在循环条件部分检查A.length
函数解(A,K)
{
对于(i=0;i
.as控制台{背景色:黑色!重要;颜色:石灰;}
.作为控制台包装{max height:100%!important;top:0;}
一个解决方案是在循环条件
部分检查A.length
函数解(A,K)
{
对于(i=0;i
.as控制台{背景色:黑色!重要;颜色:石灰;}
.作为控制台包装{最大高度:100%!重要;顶部:0;}
解决这个问题的另一种方法是通过递归。在这种情况下,您可以使用if
语句,但是,这可以作为终止递归调用的基本情况。这里的基本情况是ifK===0
这意味着如果我们不再需要旋转数组,则返回数组。它还有另一个如果!A.length
返回数组的部分。这意味着如果数组为空,也返回当前数组
函数解(A,K){
如果(K==0 | |!A.length)返回A;
返回溶液([A.pop(),…A],K-1);
}
log(解决方案([1,2,3,4],2));//[3,4,1,2]
console.log(解决方案([],10));//[]
解决这个问题的另一种方法是通过递归。在这种情况下,您可以使用if
语句,但是,这可以作为终止递归调用的基本情况。这里的基本情况是ifK===0
这意味着如果我们不再需要旋转数组,则返回数组。它还有另一个如果!A.length
返回数组的部分。这意味着如果数组为空,也返回当前数组
函数解(A,K){
如果(K==0 | |!A.length)返回A;
返回溶液([A.pop(),…A],K-1);
}
log(解决方案([1,2,3,4],2));//[3,4,1,2]
console.log(解决方案([],10));//[]
另一个获得100%全面支持的替代方案:
function solution(A, K) {
const k = K % A.length; // in case the rotation is bigger than the length of the array
if (K === 0 || k === 0) {
return A;
}
const head = A.slice(0, A.length - k);
const tail = A.slice(A.length - k, A.length);
return [...tail, ...head];
}
另一个获得100%全面支持的替代方案:
function solution(A, K) {
const k = K % A.length; // in case the rotation is bigger than the length of the array
if (K === 0 || k === 0) {
return A;
}
const head = A.slice(0, A.length - k);
const tail = A.slice(A.length - k, A.length);
return [...tail, ...head];
}
刚刚拿到100%
function cyclicRotation(A, K){
K = K % A.length
let sliceA = A.slice(A.length-K, A.length)
let sliceB = A.slice(0, A.length-K)
return sliceA.concat(sliceB)
}
刚刚拿到100%
function cyclicRotation(A, K){
K = K % A.length
let sliceA = A.slice(A.length-K, A.length)
let sliceB = A.slice(0, A.length-K)
return sliceA.concat(sliceB)
}
我认为你应该检查数组是否如它所说的那样是空的,如果是空的,那么返回数组本身就是空的。为什么你不想使用if语句呢?我想我可能会想得太多,因为我是一个新手。这样的解决方案在专业开发领域中可以接受吗?我认为你应该检查数组是否如它所说的那样是空的如果是,则返回数组本身为空。为什么您不想使用if语句
?我想我可能会想得太多,因为我是一个新手。这样的解决方案在专业开发领域可以接受吗?哦,我喜欢这样one@NikaBo如果这回答了你的问题,你应该把它标记为回答我喜欢这个吗one@NikaBo如果这回答您的问题您应该将其标记为answeredNice递归方法和解释,+1!但是,我不知道OP是否能理解这种方式。@Shidersz谢谢:)是的,我同意,如果OP以前没有见过递归,这可能有点难以理解。我想这只是实现同样事情的另一种方式。我熟悉递归,但它绝对不是我的强项。我将不得不花一段时间仔细思考这个答案,以确保我理解这里发生的事情。我感谢challenge@NikaBo递归很难理解。它确实需要练习;)很好的递归方法和解释,+1!但是,我不知道OP是否能理解这种方式。@Shidersz谢谢:)是的,我同意,如果OP以前没有见过递归,这可能有点难以理解。我想这只是实现同样事情的另一种方式。我熟悉递归,但它绝对不是我的强项。我将不得不花一段时间仔细思考这个答案,以确保我理解这里发生的事情。我感谢challenge@NikaBo递归可能很难理解。它确实需要练习;)