算法 --- 记一道面试dp算法题
题目: 给定一个数组(长度大于1),如下
let a = [1,4,3,4,5]
// 长度不确定,数值为整数
要求写一个函数,返回该数组中,除本身数字之外其他元素的成积.即返回如下:
// 过程[4*3*4*5, 1*3*4*5, 1*4*4*5, 1*4*3*5, 1*4*3*4]
// 结果[240, 60, 80, 60, 48]
题目要求不使用除法,且时间复杂度为o(N)
思路如下:
/*假设返回的数组为 resres[0] = arr[1] * arr[2] * arr[3] * arr[4] res[1] = arr[0] * arr[2] * arr[3] * arr[4]res[2] = arr[0] * arr[1] * arr[3] * arr[4]res[3] = arr[0] * arr[1] * arr[2] * arr[4]res[4] = arr[0] * arr[1] * arr[2] * arr[3]
*/
可以看到,等式右边,可以按照数组的下标分为两部分
即可以看作:
/*res[0] = a[0] * b[0]res[1] = a[1] * b[1]res[2] = a[2] * b[2]res[3] = a[3] * b[3]res[4] = a[4] * b[4]其中: a[0] = 1a[1] = arr[0]a[2] = arr[1] * arr[0]a[3] = arr[2] * arr[1] * arr[0]a[4] = arr[3] * arr[2] * arr[1] * arr[0]进一步:a[0] = 1a[1] = arr[0] * a[0] => arr[0]a[2] = arr[1] * a[1] => arr[1] * arr[0]...a[n] = arr[n-1] * a[n-1]同理:b[n] = 1b[n - 1] = arr[n+1] * b[n + 1] */
实现如下:
function getArr(arr){let len = arr.length, a = new Array(len).fill(1), b = new Array(len).fill(1), res = []for(let i = 1; i < len; i++){a[i] = arr[i - 1] * a[i -1]}for(let i = len - 2; i > -1; i--){b[i] = arr[i+1] * b[i+1]}for(let i = 0; i<=len - 1; i++){res[i] = a[i] * b[i]}return res
}
说明: 题目源自面试, 思路来自实验室大佬
算法 --- 记一道面试dp算法题相关推荐
- webjs求数组的中位数‘_算法:一道常见的数组题,但很多人却写不出来(JAVA)...
给定两个数组,求数组的中位数 数组 num1=[1,2,3]. 数组num2=[4,5] .中位数=3 解题思路:两个数组合并,放到一个新的数组,数组内的元素要有序.然后就是求中位数的数学方式. [机 ...
- 多校一道KMP+DP的题
难啊,多校当时根本不会做 题目描述 White Cloud has a rectangle carpet of n*m. Grid (i,j) has a color colorA[i][j] and ...
- 记一道USB流量分析题
本文内容全部来自于下面两个博客: USB-HID的初步认识 从CTF中学USB流量捕获与解析 USB协议的数据部分在Leftover Capture Data域之中,在Mac和Linux下可以用tsh ...
- dp笔记:关于DP算法和滚动数组优化的思考
从网上总结了一些dp的套路以及对滚动数组的一些思考,现记录如下,希望以后回顾此类算法时会有所帮助. 目录 1.DP算法经验 1.DP算法核心: 2.DP算法类别以及例题 例1:三步问题 例2:最小路径 ...
- 2019多益笔试编程和面试的算法题
2019多益笔试编程和面试的算法题 多益网络笔试编程题:字符串的指定位数组合 原题概述(只记得大概): 题目解答 多益网络面试算法题:不用比较找出两数中的较大值和较小值 原题概述: 题目解答 代码示例 ...
- 面试时算法题的解答思路
面试中纯粹考算法的问题一般是让很多程序员朋友痛恨的,这里分享下我对于解答算法题的一些思路和技巧. 一般关于算法的文章,都是从经典算法讲起,一种一种算法介绍,见得算法多了,自然就有了感悟,但如此学习花费 ...
- [汇总III]微软等公司数据结构+算法面试第1-80题[前80题首次集体亮相]
[整理III]微软等公司数据结构+算法面试第1-80题汇总 ---首次一次性汇总公布 由于这些题,实在太火了.所以,应广大网友建议要求,在此把之前已整理公布的前80题, 现在,一次性分享出来.此也算是 ...
- 给定数组 求和等于固定值 算法_[见题拆题] 大厂面试算法真题解析 - 第一期开张...
如今想要收获大厂offer,在面试的前几轮,总是躲不开算法这座大山. 常听人说,算法很难.这话没错.算法本身是是一个艰深的方向.但是算法题却有据可循.通过有针对性的学习和练习,我们完全可以掌握解题的基 ...
- 蓝桥杯备考-刷题之路-动态规划算法(DP算法)Part1
之前在刷力扣的时候就是浑浑噩噩的,照着评论区的答案写了一遍就万事大吉了,没有深度思考过.这次备考蓝桥杯看到DP算法的第一道题就不会,更难受的是看答案了依然完全不理解,所以决心把DP算法一次弄懂. 开始 ...
最新文章
- C#的UInt64.MaxValue和C语言的0xffffffffffffffc5ull
- 文档管理服务器文件的脱机编辑选项无法编辑,让MOSS2007文档的存取更具个性
- 【专栏原创]】忘掉一切,从用户场景出发——我在需求上犯过的错
- python的两种执行模式_Python运行执行模式
- 3.2. @RestController
- XML DOM Object Model in .NET [2/3]
- VB6 mysql二进制读取,vb6关于VB以二进制(binary)方式读取文本内容
- Egret入门学习日记 --- 第十五篇(书中 6.1~6.9节 内容)
- C++11 后置返回类型
- 在iPad/iPhone上使用Firebug
- oracle PL/SQL(procedure language/SQL)程序设计之异常(exception)
- 模糊 K 均值聚类算法
- 阿里云商标自助注册申请快速入门(详细步骤和教程)
- ios-GET和POST
- 2D转换及相关案例实现
- 获取非行内样式代码封装
- draw.io 插入 word
- 用MATLAB的GUI绘图的一个简单例子
- vue学习篇--02内置指令 计算属性 侦听属性
- 的确,人在做,天在看
热门文章
- linux so_nosigpipe,TCP_NODELAY/SO_LINGER/SO_NOSIGPIPE/MSG_NOSIGNAL设置
- 查询去重_【Freya的MySQL课堂】DQL基础查询
- 【caffe-Windows】caffe+VS2013+Windows+GPU配置+cifar使用
- Multiple Dispatch
- 20145309信息安全系统设计基础第12周学习总结后篇
- 创业感悟:技术兄弟为什么一直没有起来(1)
- Android SDK打包
- mysql如果数据不存在,则插入新数据,否则更新
- aix6.1 nfs
- Tip:使用Extender的ResolveControlID事件