浙江联玛客科技有限公司-笔试

纸质算法题

1、

输入数据:1、3、2、4、8...

输出数据:3、1、4、2、8...

找出规律,写出一个程序求解,并附上时间复杂度和空间复杂度

我的答案:

规律一:奇偶位互换

假设输入数据长度为50

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[] arr = new int[50];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = input.nextInt();
        }
        for (int i = 0; i < arr.length;) {
            if (i == arr.length - 1) {
                break;
            }
            System.out.println(arr[i + 1]);
            System.out.println(arr[i]);
            i += 2;
        }
    }

时间复杂度:O(n),空间复杂度:O(n)

交流:

B:假设我不要你输出这些数据,只要你改变内部数据,你该怎么优化;

A:...

B:你判断一下数组的长度

A:我知道了,判断数据的长度是奇数/偶数,然后倒序输出就可以了;(时间复杂度为O(1),空间复杂度为O(1)

B:是的

猜你喜欢

转载自www.cnblogs.com/syjp/p/10486167.html
今日推荐