[leetCode]剑指 Offer 66. 构建乘积数组
解法
把A数组分为两部分:
A[0,...,i-1]
A[i+1,...,n-1]
数组B可以用一个矩阵创建:
另C[i]
为矩阵第i
行左半部分的乘积,D[i]
为矩阵第i
行右半部分的乘积。C[i]
可以自上而下计算:C[i] = C[i-1] * A[i-1]
,D[i]
可以自下而上计算:D[i] = D[i+1]*A[i+1]
,所以B[i] = C[i] * D[i]
class Solution {
public int[] constructArr(int[] a) {
if (a == null || a.length == 0) return new int[]{};
int[] b = new int[a.length];
b[0] = 1;
for (int i = 1; i < a.length; i++) {
b[i] = b[i-1] * a[i-1];
}
int temp = 1;
for (int i = a.length - 2; i >= 0; i--) {
temp *= a[i+1];
b[i] *= temp;
}
return b;
}
}
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· C#性能优化:为何 x * Math.Sqrt(x) 远胜 Math.Pow(x, 1.5)
· 本可避免的P1事故:Nginx变更导致网关请求均响应400
· 还在手写JSON调教大模型?.NET 9有新玩法
· 复杂业务系统线上问题排查过程
· 通过抓包,深入揭秘MCP协议底层通信
· AI 的力量,开发者的翅膀:欢迎使用字节旗下的 AI 原生开发工具 TRAE
· 「闲聊文」准大三的我,思前想后还是不搞java了
· C#性能优化:为何 x * Math.Sqrt(x) 远胜 Math.Pow(x, 1.5)
· 千万级的大表如何新增字段?
· 《HelloGitHub》第 112 期
2019-09-29 Opencv 图像数字化 Mat
2019-09-29 Opencv 图像数字化 ndarray
2019-09-29 Opencv矩阵运算 C++ API
2019-09-29 Opencv 矩阵运算python API