zoukankan      html  css  js  c++  java
  • java—数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = input数组中,除了input[i] 之外的所有数的乘积,不用考虑溢出例如 input {2, 3, 4, 5} output: {60, 40, 30, 24}

     1 /**
     2  * 小米关于小米笔试题 数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] =
     3  * input数组中,除了input[i] 之外的所有数的乘积,不用考虑溢出例如 input {2, 3, 4, 5} output: {60, 40,
     4  * 30, 24}
     5  * 
     6  * @author Administrator
     7  * 
     8  */
     9 public class Test5 {
    10     public static void main(String[] args) {
    11         int[] arr = { 3, 2, 3, 7 };
    12         for (int i : cal(arr)) {
    13             System.out.print(i + "  ");
    14         }
    15         System.out.println();
    16 
    17         for (int i : cal2(arr)) {
    18             System.out.print(i + "  ");
    19         }
    20 
    21         System.out.println();
    22     }
    23 
    24     /*
    25      * 方法1,首先计算整个数组全部项的成绩然后除以当前项的值,此处考虑使用long类型的数据
    26      */
    27     public static int[] cal(int[] arr) {
    28         // 得到数组的所有数的成绩
    29         int result = 1;
    30         // 同样都是两个for循环
    31         for (int i = 0; i < arr.length; i++) {
    32             result = result * arr[i];
    33         }
    34         int[] reArr = new int[arr.length];
    35         for (int i = 0; i < reArr.length; i++) {
    36             reArr[i] = result / arr[i];
    37         }
    38 
    39         return reArr;
    40     }
    41 
    42     /*
    43      * 方法2,
    44      */
    45 
    46     public static int[] cal2(int[] inputArr) {
    47         int[] result = new int[inputArr.length];
    48         int len = result.length;
    49         result[0] = 1;
    50         // 从1位置开始result[i]的值表示输入数组的前i项的值
    51         for (int i = 1; i < len; i++) {
    52             result[i] = result[i - 1] * inputArr[i - 1];
    53         }
    54         // 计算从i项开始后面项的值
    55         // 这里只能是倒叙相乘
    56         int temp = 1;
    57         for (int i = len - 2; i >= 0; i--) {
    58             // 最后一项
    59             temp = temp * inputArr[i + 1];
    60             result[i] = result[i] * temp;
    61         }
    62         return result;
    63 
    64     }
    65 }
  • 相关阅读:
    sqlalchemy presto 时间比较
    python 读取consul配置
    移动平台自动化测试:appium(二)
    移动平台自动化测试:appium(一)
    web自动化测试:watir+minitest(五)
    web自动化测试:watir+minitest(四)
    从智能垃圾桶模型引发的思考?
    AD技巧之敷铜
    AD技巧之如何修改过孔的默认尺寸
    硬件工程师之路之电阻知识
  • 原文地址:https://www.cnblogs.com/fuck1/p/5900098.html
Copyright © 2011-2022 走看看