每日一练---codewars7 Remove Zeros

这道题目也是一个4kyu 的难度,难在不准使用数组或者对象的原生方法

[7, 2, 3, 0, 4, 6, 0, 0, 13, 0, 78, 0, 0, 19, 14]
return [7, 2, 3, 4, 6, 13, 78, 19, 14, 0, 0, 0, 0, 0, 0]

思路

  • 写一个方法,禁止使用数组或者对象的原生方法,
  • 把所有为 0 或者 '0' 的元素,放到数组的最后
  • 那我自己实现一个数组原生的方法代替数组原生的方法
    // Sort "array" so that all elements with the value of zero are moved to the
    // end of the array, while the other elements maintain order.
    // [0, 1, 2, 0, 3] --> [1, 2, 3, 0, 0]
    // Zero elements also maintain order in which they occurred.
    // [0, "0", 1, 2, 3] --> [1, 2, 3, 0, "0"]

    // Do not use any temporary arrays or objects. Additionally, you're not able
    // to use any Array or Object prototype methods such as .shift(), .push(), etc

    // the correctly sorted array should be returned.
    var arrNoZero = [];
    var arrZero = []
    var mypush = function (arr, addArr) {
        for (var i = 0; i < addArr.length; i++) {
            arr[arr.length] = addArr[i]
        }
    };
    for (var i = 0; i < array.length; i++) {
        if (array[i] !== 0 && array[i] !== '0') {
            mypush(arrNoZero, [array[i]]);
        }else {
            mypush(arrZero, [array[i]]);
        }
    }
    array = [...arrNoZero, ...arrZero];
    return array
}

var input = [7, 2, 3, 0, 4, 6, 0, 0, 13, 0, 78, 0, 0, 19, 14];

removeZeros(input)

你可能感兴趣的:(每日一练---codewars7 Remove Zeros)