zoukankan      html  css  js  c++  java
  • 剑指offer——03二维数组中的查找

    题目描述

    给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。
     
    题解:
      将每一行分为两半部分,0,1,2....i-1    与   i+1.....n-1这两部分
      利用下图所示的矩阵,左半部分从上向下,利用上一行答案求解,右半部分从下至上求解,利用下一行答案求解。
      

      

     1 class Solution {
     2 public:
     3     vector<int> multiply(const vector<int>& A) {
     4         int size = A.size();
     5         if (size < 1)return{};
     6         vector<int>res(size);
     7         vector<int>C(size, 1), D(size, 1);
     8         for (int i = 1, j = size - 2; i < size && j >= 0; ++i, --j)
     9         {
    10             C[i] = C[i - 1] * A[i - 1];
    11             D[j] = D[j + 1] * A[j + 1];
    12         }
    13         for (int i = 0; i < size; ++i)
    14             res[i] = C[i] * D[i];
    15         return res;
    16     }
    17 };
  • 相关阅读:
    前端之页面标签的图标修改
    分页, 解析器, 渲染器
    DRF的认证,频率,权限
    视图组件,路由组件,版本控制
    序列化组件
    Restful规范
    docker大全集
    哨兵和docker容器
    项目发布须知
    Linux之nginx
  • 原文地址:https://www.cnblogs.com/zzw1024/p/11714378.html
Copyright © 2011-2022 走看看