剑指offer面试题52
来源:互联网 发布:企业网络规划图 编辑:程序博客网 时间:2024/05/18 02:17
自己想出来的!但是花了1个半小时、、、那个规律只要发现了就是秒做
我太倾向于一开始想到的方法,主要是列的乘项规律问题,思维一直停留在平移
却没想到拆分开来看
#include<iostream>#include<string>#include<queue>using namespace std;/*面试题52:给定一个数组A[0…n-1],求B[0…n-1]B[i]=(所有A相乘,但是唯独不乘A[i])不可以用除法*/#define M 20000int a_num[M];int b_num[M];//简单方法:直接每次都乘//M大于50000就出不来了//复杂度为O(n^2)void get_B_bad(int *A,int len,int *B){int i,j;for(i=0;i<len;i++){B[i]=1;for(j=0;j<len;j++){if(j!=i)B[i]*=A[j];}}printf("bad way end!\n");}//好方法:通过观察可发现//B[i]=(i下标前面的乘积和)乘(i下标后面的乘积和)//而i后面的乘积和可以一开始就算出来//i前面的乘积和可以边算边得//此题需要观察规律。。。复杂度为O(n+n)void get_B_good(int *A,int len,int *B){int left,i;int right[M+1];left=1;right[len]=1;for(i=len-1;i>=0;i--){right[i]=right[i+1]*A[i];}for(i=0;i<len;i++){B[i]=left*right[i+1];left*=A[i];}printf("good way end!\n");}int main(){int i;for(i=0;i<M;i++)a_num[i]=1;get_B_good(a_num,M,b_num);}
0 0
- 剑指offer面试题52
- 剑指offer 面试题
- 剑指offer面试题
- 剑指offer面试题总结
- 剑指offer面试题06
- 剑指offer面试题 04
- 剑指offer 面试题07
- 剑指offer面试题08
- 剑指offer面试题42
- 剑指offer面试题1
- 剑指offer面试题3
- 剑指offer面试题4
- 剑指offer面试题5
- 剑指offer面试题6
- 剑指offer面试题7
- 剑指offer面试题8
- 剑指offer面试题9
- 剑指offer面试题10
- MSP430 Flash信息区
- AI象棋中的,最大最小值算法思路
- 粗糙的玩一玩javascript的"编译"(1)
- 洛谷 P2278 03湖南 操作系统
- java中this的用法
- 剑指offer面试题52
- BZOJ[1750/3384]: [Usaco2005 qua]Apple Catching
- JZOJ 4586 Ned 的难题【NOIP2016模拟7.7】
- 测试硬盘IO性能的心酸历程
- 机器学习基础(林軒田)笔记之十
- jQuery 知识点总结
- 关于MSP430-Flash超过64K的读写操作方法
- 1020: 部分A+B
- ionic navbutton有时候会消失的bug