zoukankan      html  css  js  c++  java
  • 算法总结之 不包含本位置的累乘数组

    给定一个整型数组arr,返回不包含本位置的乘数组

    一般做法是用除法,新方法:

       一个位置上 除去 自己值的累乘,就是自己左边的累乘再乘以自己右边的累乘,即 res[i]=lr[i-1]*rl[i+1]

      最左的位置 和 最右的位置 比较特殊, 即 res[0]=rl[1] , res[N-1]=lr[N-2]

       这样虽然可以得到结果,但是不好的是,用两个两个额外的数组,lr[]  rl[], 如何避免呢? 通过res数组复用的方式。

    具体看代码吧:

    package TT;
    
    
    public class Test80 {
    
        public static int[] product(int[] arr){
            
              if(arr==null || arr.length<2){
                    return null;
              }
              
              int[] res  = new int[arr.length];
              res[0]=arr[0];
              for (int i = 1; i < arr.length; i++) {
                
                  res[i]=res[i-1]*arr[i];
            }
             int tmp = 1;
             for(int i = arr.length-1; i>0; i--){
                 res[i]=res[i-1]*tmp;
                 tmp*=arr[i];
             }
             res[0]=tmp;
             return res;
        }
        
        public static void main(String[] args){
            int[] arr = new int[4];
            arr[0]=2;
            arr[1]=3;
            arr[2]=1;
            arr[3]=4;
            
            int[] arr1 = product(arr);
            for(int i =0; i<arr.length; i++){
                System.out.println(arr1[i]);
            }
            
        }
        
    }

  • 相关阅读:
    含字母数字的字符串排序算法,仿Windows文件名排序算法
    WCF、WPF、Silverlight和区别(转)
    线程组的介绍
    python基础字符串的修改
    c语言
    python 字典
    单元测试相关
    python列表
    如何才能设计出好的测试用例
    字符串查找
  • 原文地址:https://www.cnblogs.com/toov5/p/7494904.html
Copyright © 2011-2022 走看看