zoukankan      html  css  js  c++  java
  • CVTE笔试题

    一、题目

    给定一个数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法: 要求O(1)空间复杂度和O(n)的时间复杂度;
    除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、堆空间和全局静态变量等);请写出程序(主流编程语言任选)实现并简单描述。

    二、解法

     1 package test;
     2 import java.util.ArrayList;
     3 public class Tang {
     4     public static void main(String[] args) {
     5         int[] array = {4,5,2,8,3};
     6         int[] b = Tang(array);
     7     }
     8     public static int[] Tang(int[] arrayA){
     9         if(arrayA == null || arrayA.length == 0){
    10             return arrayA;
    11         }
    12         int[] arrayB = new int[arrayA.length];
    13         arrayB[0] = 1;
    14         //先存b[i]的左边数的乘积
    15         for(int i = 1; i < arrayA.length; i++){
    16             arrayB[i] = arrayA[i-1]*arrayB[i-1];
    17         }
    18         int temp = 1;
    19         //再存b[i]的右边数的乘积
    20         for(int i = arrayA.length-2; i >= 0; i--){
    21             temp *= arrayA[i+1];
    22             arrayB[i] *= temp;
    23         }
    24         return arrayB;
    25     }
    26 }
  • 相关阅读:
    常用html设置:
    Java Enum
    ajax
    Utils使用
    jdk免安装对应配置
    jdk mvn下载--操作系统
    SpringMvc 文件上传后台处理
    SpringMvc 获取ApplicationContext
    Jenkins 持续集成
    自定义 directive pagination
  • 原文地址:https://www.cnblogs.com/fankongkong/p/7491887.html
Copyright © 2011-2022 走看看