纸质算法题
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:是的