分享一个大牛的人工智能教程。零基础通俗易懂风趣幽默希望你也加入到人工智能的队伍中来请轻击人工智能教程大家好欢迎来到我的网站 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑人工智能时代就要来临了科… 继续阅读 前言https://www.captainai.net/troubleshooterpackage live.every.day.ProgrammingDesign.CodingInterviewGuide.ArrayAndMatrix; import java.util.Arrays; /** * 不包含本位置值的累乘数组 * * 【题目】 * 给定一个整型数组arr返回不包含本位置值的累乘数组。 * 例如arr[2,3,1,4]返回[12,8,24,6]即除自己外其他位置上的累乘。 * * 【要求】 * 1.时间复杂度为O(N)。 * 2.除需要返回的结果数组外额外空间复杂度为O(1)。 * * 【进阶题目】 * 对时间和空间复杂度的要求不变而且不可以使用除法。 * * 【难度】 * 简单 * * 【解答】 * 先介绍可以使用除法的实现结果数组记为res所有数的乘积记为all。如果数组中不含0则设置res[i]all/arr[j](0in) * 即可。如果数组中有1个0对唯一的arr[i]0的位置令res[i]all其他位置上的值都是0即可。如果数组中0的数量大于1那 * 么res所有位置上的值都是0。具体过程请参看如下代码中的product1方法。 * * author Created by LiveEveryDay */ public class NotContainCurrentCumulativeProductArray1 { public static int[] product1(int[] arr) { if (arr null || arr.length 2) { return null; } int count 0; int all 1; for (int i 0; i ! arr.length; i) { if (arr[i] ! 0) { all * arr[i]; } else { count; } } int[] res new int[arr.length]; if (count 0) { for (int i 0; i ! arr.length; i) { res[i] all / arr[i]; } } if (count 1) { for (int i 0; i ! arr.length; i) { if (arr[i] 0) { res[i] all; } } } return res; } public static void main(String[] args) { int[] arr {-4, 3, -2, 5, -7, 1, 6}; int[] res product1(arr); System.out.printf(The array is: %s, Arrays.toString(res)); } } // ------ Output ------ /* The array is: [1260, -1680, 2520, -1008, 720, -5040, -840] */
【简单】不包含本位置值的累乘数组-Java:原问题
分享一个大牛的人工智能教程。零基础通俗易懂风趣幽默希望你也加入到人工智能的队伍中来请轻击人工智能教程大家好欢迎来到我的网站 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑人工智能时代就要来临了科… 继续阅读 前言https://www.captainai.net/troubleshooterpackage live.every.day.ProgrammingDesign.CodingInterviewGuide.ArrayAndMatrix; import java.util.Arrays; /** * 不包含本位置值的累乘数组 * * 【题目】 * 给定一个整型数组arr返回不包含本位置值的累乘数组。 * 例如arr[2,3,1,4]返回[12,8,24,6]即除自己外其他位置上的累乘。 * * 【要求】 * 1.时间复杂度为O(N)。 * 2.除需要返回的结果数组外额外空间复杂度为O(1)。 * * 【进阶题目】 * 对时间和空间复杂度的要求不变而且不可以使用除法。 * * 【难度】 * 简单 * * 【解答】 * 先介绍可以使用除法的实现结果数组记为res所有数的乘积记为all。如果数组中不含0则设置res[i]all/arr[j](0in) * 即可。如果数组中有1个0对唯一的arr[i]0的位置令res[i]all其他位置上的值都是0即可。如果数组中0的数量大于1那 * 么res所有位置上的值都是0。具体过程请参看如下代码中的product1方法。 * * author Created by LiveEveryDay */ public class NotContainCurrentCumulativeProductArray1 { public static int[] product1(int[] arr) { if (arr null || arr.length 2) { return null; } int count 0; int all 1; for (int i 0; i ! arr.length; i) { if (arr[i] ! 0) { all * arr[i]; } else { count; } } int[] res new int[arr.length]; if (count 0) { for (int i 0; i ! arr.length; i) { res[i] all / arr[i]; } } if (count 1) { for (int i 0; i ! arr.length; i) { if (arr[i] 0) { res[i] all; } } } return res; } public static void main(String[] args) { int[] arr {-4, 3, -2, 5, -7, 1, 6}; int[] res product1(arr); System.out.printf(The array is: %s, Arrays.toString(res)); } } // ------ Output ------ /* The array is: [1260, -1680, 2520, -1008, 720, -5040, -840] */