python_lintcode_109数字三角形_50数组剔除元素后的乘积
来源:互联网 发布:淘宝退款成功后钱在哪 编辑:程序博客网 时间:2024/05/19 22:23
109数字三角形
题目
给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。
注意事项
如果你只用额外空间复杂度O(n)的条件下完成可以获得加分,其中n是数字三角形的总行数。
您在真实的面试中是否遇到过这个题? Yes
样例
比如,给出下列数字三角形:
[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
从顶到底部的最小路径和为11 ( 2 + 3 + 5 + 1 = 11)。
思路
- 从倒数第二层开始,加上下一层相邻的两个数的最小值
- 返回triangle[0][0]
[ [2], [3,4], [6,5,7], [4,1,8,3]][ [2], [2], [11] [3,4], [9,10], [7,6,10],]
代码
class Solution: """ @param: triangle: a list of lists of integers @return: An integer, minimum path sum """ def minimumTotal(self, triangle): # write your code here #行 n=len(triangle) if n==1:return triangle[0][0] if triangle==[]:return [] for i in range(n-2,-1,-1): for j in range(len(triangle[i])): #从倒数第二层开始 triangle[i][j]=min(triangle[i+1][j],triangle[i+1][j+1])+triangle[i][j] return triangle[0][0] def min(self,a,b): if a>b:return b return a
50数组剔除元素后的乘积
题目
http://www.lintcode.com/zh-cn/problem/product-of-array-exclude-itself/
给定一个整数数组A。
定义B[i] = A[0] * … * A[i-1] * A[i+1] * … * A[n-1], 计算B的时候请不要使用除法。
您在真实的面试中是否遇到过这个题? Yes
样例
给出A=[1, 2, 3],返回 B为[6, 3, 2]
思路
- 一开始不是很懂题目的要求
- 后面看了别人的博客,原来是将元素剔除后,剩余的进行乘积,结果都保存到B
- 其实可以用两次循环来做
- 参考了大神们的博客
- http://blog.csdn.net/shadowkael/article/details/52024039
- 用左右因子进行乘积的方法,先得出每个元素的左右因子,再将其进行乘积,放于B
[1,2,3,4,5]左:1, 1*2, 1*2*3, 1*2*3*4 \ | / | \ | / 剔除5 \|/ */|\ / *| \* / | \右: 5, 5*4,5*4*3, 5*4*3*2剔除:4 3 2 1结果:[120,60,40,30,24]
代码
class Solution: """ @param: nums: Given an integers array A @return: A long long array B and B[i]= A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1] """ def productExcludeItself(self, nums): # write your code here lenA=len(nums) if lenA==1:return [1] if lenA==[]:return [] #first准备好左右因子 left_factor=[] right_factor=[] for i,j in zip(nums[:-1],nums[::-1]): if left_factor and right_factor: left_factor.append(left_factor[-1]*i) right_factor.append(right_factor[-1]*j) else: left_factor.append(i) right_factor.append(j) #second对左右因子进行乘法运算,放于结果B B=[] for i in range(lenA): #left_down和right_down为下标 left_down=i-1 right_down=lenA-i-2 left_down=self.cheng(left_down,left_factor) right_down=self.cheng(right_down,right_factor) B.append(left_down*right_down) return B def cheng(self,x,y): if x>=0: x=y[x] else: x=1 return x
阅读全文
0 0
- python_lintcode_109数字三角形_50数组剔除元素后的乘积
- 数组剔除元素后的乘积
- 题目:数组剔除元素后的乘积
- LintCode 数组剔除元素后的乘积
- (50)数组剔除元素后的乘积
- LintCode_数组剔除元素后的乘积
- 数组剔除元素后的乘积
- lintcode ----数组剔除元素后的乘积
- 数组剔除元素后的乘积
- 数组剔除元素后的乘积
- Lintcode 数组剔除元素后的乘积
- Lintcode 数组剔除元素后的乘积
- 数组剔除元素后的乘积
- 数组剔除元素后的乘积_LintCode
- 数组剔除元素后的乘积
- Lintcode:数组剔除元素后的乘积
- lintcode-数组剔除元素后的乘积-50
- LintCode-剑指Offer-(50)数组剔除元素后的乘积
- 算法 卡特兰Catalan数
- Eigen
- Docker切换到国内下载源方法
- 51nod 1239 欧拉函数之和
- SimpleAdapter中使用Drawable和Bitmap对象的方法
- python_lintcode_109数字三角形_50数组剔除元素后的乘积
- spark调优
- 【React native】 平时经常遇到的报错
- centos6或者7无图形界面安装oracle11g
- selenium常用函数
- Activity 的Dialog 样式使用
- hdu1232 畅通工程
- xshell屏幕卡死
- LeetCode 70. Climbing Stairs