698数组中最大的差值
题目
http://www.lintcode.com/zh-cn/problem/maximum-difference-in-arrays/
给 m 个数组, 每一个数组均为升序. 现在你可以从两个不同的数组中挑选两个整数(每一个数组选一个)并且计算差值. 我们将两个整数 a 和 b 之间的差定义为它们的绝对差 |a - b|. 你的任务是去找到最大的差值.
注意事项
每一个给出的数组长度至少为 1. 至少有两个不为空的数组
m 个数组中所有整数的个数和在 [2, 10000]范围内.
m 个数组中所有的整数均将在[-10000, 10000]范围内.
样例
给一个数组 [[1,2,3], [4,5], [1,2,3]], 返回 4
获得最大差值的一种方式是在第一个数组或第三个数组中取 1, 在第二个数组中取 5.
代码
class Solution:
"""
@param: : an array of arrays
@return: return the max distance among arrays
"""
def maxDiff(self, arrs):
# write your code here
#数组都是按升序的
mina = arrs[0][0]
maxa = arrs[0][-1]
res = 0
for i in range(1,len(arrs)):
res = max(res,abs(maxa - arrs[i][0]))
res = max(res,abs(arrs[i][-1] - mina))
mina = min(mina,arrs[i][0])
maxa = max(maxa,arrs[i][-1])
return res
3. 统计数字
题目
http://www.lintcode.com/zh-cn/problem/digit-counts/
计算数字k在0到n中的出现的次数,k可能是0~9的一个值
样例
例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1, 10, 11, 12)
代码
class Solution:
"""
@param: : An integer
@param: : An integer
@return: An integer denote the count of digit k in 1..n
"""
def digitCounts(self, k, n):
# write your code here
if k==0 and n==0:
return 1
x =str(k)
j=0
for i in range(n+1):
m = str(i)
if x in m:
j = m.count(x)+j
return j
12. 带最小值操作的栈
实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
注意事项
如果堆栈中没有数字则不能进行min方法的调用
样例
如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1
代码
class MinStack:
def __init__(self):
# do intialization if necessary
self.x = []
self.y = []
"""
@param: number: An integer
@return: nothing
"""
def push(self, number):
# write your code here
self.x.append(number)
if len(self.y) == 0:
self.y.append(number)
else:
self.y.append(min(self.y[-1],number))
"""
@return: An integer
"""
def pop(self):
# write your code here
self.y.pop()
return self.x.pop()
"""
@return: An integer
"""
def min(self):
# write your code here
return self.y[-1]