本文主要是介绍输入一个数组,要求输出一个等长的新数组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
昨天到了晚上12点,还是没想出来。然后到了答题时间,窗口关闭。错失了一个机会啊。就这么错过了了。。。
今天早上上班路上,花了10分钟,想出了下面这个方案,整体是2次循环(能用除法的方案也得2次循环),应该也算O(n)把。
/*** 输入一个数组,要求输出一个等长的新数组* 新数组的下标元素的和等于旧数组除当前下标元素外所以元素的乘积* 例如:* 输入:* [1,2,3,4]* 输出:* [24,12,8,6]* 解释:* 23 = 原数组[1] * 原数组[2] * 原数组[3]* 12 = 原数组[0] * 原数组[2] * 原数组[3]** 要求:* 时间复杂度O(n)* 不能使用除法* 不需要考虑乘积溢出** Author : Jimmy Li*/
public class ReCalculateArray {public static void main(String[] args) {long[] arr = new long[]{1,2,3,4};long[] newArr = cal(arr);System.out.println(Arrays.toString(newArr));arr = new long[]{1,2};newArr = cal(arr);System.out.println(Arrays.toString(newArr));}private static long[] cal(long[] array) {if (array == null || array.length ==
这篇关于输入一个数组,要求输出一个等长的新数组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!