《程序员代码面试指南》第八章 数组和矩阵问题 不包含本位置值的累乘数组

题目

不包含本位置值的累乘数组

java代码

package com.lizhouwei.chapter8;

/**
 * @Description: 不包含本位置值的累乘数组
 * @Author: lizhouwei
 * @CreateDate: 2018/5/9 21:11
 * @Modify by:
 * @ModifyDate:
 */
public class Chapter8_22 {

    public int[] product(int[] arr) {
        int[] res = new int[arr.length];
        int product = 1;
        for (int i = 0; i < arr.length; i++) {
            res[i] = product * arr[i];
            product = product * arr[i];
        }
        product = 1;
        for (int i = arr.length - 1; i > 0; i--) {
            res[i] = res[i - 1] * product;
            product = product * arr[i];
        }
        res[0] = product;
        return res;
    }

    //测试
    public static void main(String[] args) {
        Chapter8_22 chapter = new Chapter8_22();
        int[] arr = {2, 3, 1, 4};
        int[] res = chapter.product(arr);
        for (int i = 0; i < res.length; i++) {
            System.out.print(res[i] + " ");
        }
    }
}

结果

原文地址:https://www.cnblogs.com/lizhouwei/p/9016747.html

时间: 2024-11-08 13:28:20

《程序员代码面试指南》第八章 数组和矩阵问题 不包含本位置值的累乘数组的相关文章

程序员代码面试指南 IT名企算法与数据结构题目最优解 ,左程云著pdf高清版免费下载

下载地址:网盘下载 备用地址:网盘下载 内容简介  · · · · · ·这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现.针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近200道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到万无一失.“刷”完本书后,你就是“题王”!__eol__本书采用题目+解答的方式组织内容,并把面试题类型相近或者解法相近的题目尽量放在一起,读者在学习本书时很容易看出面试题解法之间的联系,使知识的学习避免碎片化

[程序员代码面试指南]数组和矩阵问题-找到无序数组中最小的k个数(堆排序)

题目链接 https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf?tpId=13&tqId=11182&tPage=2&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述 从无序序列,找到最小topk个元素. 解题思路 使用大根堆维护最小topk个元素: - 首先前k个元素建立大根堆(从

左神算法书籍《程序员代码面试指南》——1_10最大值减去最小值小于或等于num的子数组数量

[题目]给定数组arr和整数num,共返回有多少个子数组满足如下情况:max(arr[i.j]) - min(arr[i.j]) <= num max(arfi.j])表示子数组ar[ij]中的最大值,min(arli.j])表示子数组arr[i.j]中的最小值.[要求]如果数组长度为N,请实现时间复杂度为O(N)的解法.[题解]使用两个单调栈,一个栈维持从大到小的排序,头部永远是最大值一个维持从小到大的排序,头部永远都是最小值然后使用窗口进行数据移动当右移后,最大最小差超过num时,计算这段数

[算法]不包含本位置值的累乘数组

题目: 给定一个整型数组,返回不包含本位置的累乘数组. 例如:arr=[2,3,1,4],返回[12,8,24,6],即除自己外,其他位置的类乘. 要求: 1.时间复杂度为O(N). 2.除需要返回的结果数组之外,额外空间复杂度为O(1). 使用除法: 结果数组记为res,所有数的乘积记为all.如果数组中不含0,则设置res[i]=all/arr[i].如果数组中有一个0,对唯一的arr[i]==0的位置令res[i]=all,其他位置都是0.如果数组中0的数量大于1,那么res所有位置上的值

《程序员代码面试指南》第八章 数组和矩阵问题 自然数数组的排序

题目 自然数数组的排序 java代码 package com.lizhouwei.chapter8; /** * @Description: 自然数数组的排序 * @Author: lizhouwei * @CreateDate: 2018/5/8 20:51 * @Modify by: * @ModifyDate: */ public class Chapter8_14 { public void sort(int[] arr) { int left = 0; int right = arr.

《程序员代码面试指南》第八章 数组和矩阵问题 将正方形矩阵顺时针转动90

题目 将正方形矩阵顺时针转动90 java代码 package com.lizhouwei.chapter8; /** * @Description: 将正方形矩阵顺时针转动90 * @Author: lizhouwei * @CreateDate: 2018/4/28 22:16 * @Modify by: * @ModifyDate: */ public class Chapter8_2 { public void rotate(int[][] matrix) { int tR = 0; i

《程序员代码面试指南》第八章 数组和矩阵问题 需要排序的最短子数组长度

题目 需要排序的最短子数组长度 java代码 package com.lizhouwei.chapter8; /** * @Description: 需要排序的最短子数组长度 * @Author: lizhouwei * @CreateDate: 2018/4/29 8:03 * @Modify by: * @ModifyDate: */ public class Chapter8_5 { public int getMinLength(int[] arr) { if (arr == null

《程序员代码面试指南》第八章 数组和矩阵问题 &quot;之&quot;字形打印矩阵

题目 "之"字形打印矩阵 java代码 package com.lizhouwei.chapter8; /** * @Description: "之"字形打印矩阵 * @Author: lizhouwei * @CreateDate: 2018/4/28 22:53 * @Modify by: * @ModifyDate: */ public class Chapter8_3 { public void printMatrixZigZag(int[][] matri

[程序员代码面试指南]数组和矩阵问题-未排序正数数组中累加和为给定值的最长子数组长度

题目描述 给定无序数组,每个值均为正数,再给定整数k.求arr中所有子数组中所有元素相加和为k的最长子数组长度.无则输出-1. 例: 输入 arr=[1,2,1,1,1],k=3 输出 3 解题思路 (时间复杂度O(N),空间复杂度O(1)) 维护指针l,r表示子数组区间.初始l=r=0,向右移动至r=arr.length结束. 维护当前子数组和sum,及到当前为止满足题意的最大len.初始sum=arr[0],len=-1. 每次比较sum和k,根据情况选择移动l还是r,并更新sum和len.