首页 > 试题广场 >

数组的交叉输出 要求: 1、任选一种

[问答题]

数组的交叉输出

要求:
1、任选一种编程语言,写代码,实现功能。
有个int数组,int[]。

n个元素为一组,正序输出。

m个元素为一组,逆序输出。

然后重复上面2步。




 public static List<Integer> crossOutput(int[] arr,int n,int m){
        int len = arr.length;
        List<Integer> ans = new ArrayList<>();
        List<Integer> reverseSubArray = new ArrayList<>();//倒序子数组
        List<Integer> subArray = new ArrayList<>();//正序子数组
        int i = 0;
        while(i<len){
            while(subArray.size()<n){
                subArray.add(arr[i]);
                i++;
            }
            while(reverseSubArray.size()<m){
                reverseSubArray.add(0,arr[i]);
                i++;
            }
            ans.addAll(subArray);
            ans.addAll(reverseSubArray);
            subArray.clear();
            reverseSubArray.clear();
        }
        return ans;
    }

发表于 2020-07-04 17:23:48 回复(0)
const splice = (array, by) => {
    if(!array.length) return []
    return array.splice(0, by)
}

const reverseSplice = (array, by) => {
    if(!array.length) return []
    return array.splice(0, by).reverse()
}

const processInput = (array = []) => {
    let result = []
    while(array.length){
        result = result.concat(splice(array,2))
        result = result.concat(reverseSplice(array,3))
    }
    return result
}

console.log(processInput([1,2,3,4,5,6,7,8,9,10]))

发表于 2021-07-10 22:49:32 回复(0)
function crossOut(array){
    let n = 2;
    let m = 3;
    let result = [];
    while( array.length != 0 ){
        let n_arr = array.slice(0, n)
        let m_arr = array.slice(n, n + m).reverse();
        result.push( ...n_arr, ...m_arr );
        array.splice(0, n + m);
    }
    return result.join(",");
}


发表于 2021-06-30 11:36:11 回复(0)
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
        let tmp_arr = []
        let index_arr = [0]
        function formatArr(n, m, arr) {
            let sum = 0
            while (sum < arr.length) {
                sum += n
                index_arr.push(sum)
                sum += m
                index_arr.push(sum)
            }
            for (let i = 0; i < index_arr.length; i++) {
                if (i % 2 == 0) {
                    tmp_arr = tmp_arr.concat(arr.slice(index_arr[i], index_arr[i + 1]))
                } else {
                    tmp_arr = tmp_arr.concat(arr.slice(index_arr[i], index_arr[i + 1]).reverse())
                }
            }
            console.log(tmp_arr)
        }
        formatArr(2, 3, arr)


发表于 2021-03-31 15:19:17 回复(0)
function console_(arr,n,m){
        var res=[]
        var stack=[]
        while(arr.length){
          for(var i=0;i<n;i++){
            res.push(arr.shift())
          }
          for(var i=0;i<m;i++){
            stack.push(arr.shift())
          }
          while(m){
            res.push(stack.pop())
            m--
          }
        }

        return res
}
发表于 2021-03-12 16:31:46 回复(0)
function reverArr(arr, n, m){
    const arr1 = arr.splice(0, n);
    const arr2 = arr.splice(0, m);
    arr = arr1.concat(arr2.reverse()).concat(arr);
    return arr;
}
使用javascript利用数组的API可以很快的写出来
发表于 2020-04-12 22:52:55 回复(0)