面试问题求教# JobHunting - 待字闺中o*a2013-06-20 07:061 楼a,2b,3a,34a,3b,8c,3a,123b,6如何找出同一个字母里面的,最大连续差值.如果只有一个记录,最大连续差值=0输出像这样:a,120b,5c,0多谢
t*d2013-06-20 07:062 楼HashMap, 里面存 character 和int[2] 用来track min and max★ 发自iPhone App: ChineseWeb 7.8【在 o**********a 的大作中提到】: a,2: b,3: a,34: a,3: b,8: c,3: a,123: b,6: 如何找出同一个字母里面的,最大连续差值.如果只有一个记录,最大连续差值=0: 输出像这样:
r*e2013-06-20 07:063 楼最大连续差值,int[2]存lastValue和currMax吧【在 t****d 的大作中提到】: HashMap, 里面存 character 和int[2] 用来track min and max: : ★ 发自iPhone App: ChineseWeb 7.8
r*h2013-06-20 07:064 楼如果每个子序列都是递增的话,用一个数组来存某个字母前一个数值,第二个数组来存该字符表示的子序列的差的最大值就好了【在 o**********a 的大作中提到】: a,2: b,3: a,34: a,3: b,8: c,3: a,123: b,6: 如何找出同一个字母里面的,最大连续差值.如果只有一个记录,最大连续差值=0: 输出像这样:
o*a2013-06-20 07:065 楼能给个简单的code提示吗我没有太看懂【在 r**h 的大作中提到】: 如果每个子序列都是递增的话,用一个数组来存某个字母前一个数值,第二个数组来存: 该字符表示的子序列的差的最大值就好了
r*h2013-06-20 07:066 楼lst = [('a',2), ('b',3), ('a',34), ('a',3), ('b',8), ('c',3), ('a',123), ('b',6)]def getMaxDiff(lst):prev, maxDiff = {}, {}for t in lst:if t[0] not in prev.keys():prev[t[0]] = t[1]maxDiff[t[0]] = 0else:curDiff = t[1] - prev[t[0]]if curDiff > maxDiff[t[0]]:maxDiff[t[0]] = curDiffprev[t[0]] = t[1]return maxDiffmd = getMaxDiff(lst)print(lst)print(md)输入:[('a', 2), ('b', 3), ('a', 34), ('a', 3), ('b', 8), ('c', 3), ('a', 123), ('b', 6)]输出:{'a': 120, 'c': 0, 'b': 5}这里prev和maxDiff都是Python的dictionary类型,相当于hashmap【在 o**********a 的大作中提到】: 能给个简单的code提示吗: 我没有太看懂
o*a2013-06-20 07:067 楼如果有c++版本的就好了,'b【在 r**h 的大作中提到】: lst = [('a',2), ('b',3), ('a',34), ('a',3), ('b',8), ('c',3), ('a',123), ('b: ',6)]: def getMaxDiff(lst):: prev, maxDiff = {}, {}: for t in lst:: if t[0] not in prev.keys():: prev[t[0]] = t[1]: maxDiff[t[0]] = 0: else:: curDiff = t[1] - prev[t[0]]
t*a2013-06-20 07:068 楼Functional programming 版本的(def x [["a" 2]["b" 3]["a" 34]["a" 3]["b" 8]["c" 3]["a" 123]["b" 6]])(defn abs [x](if (< x 0)(- x)x))(defn max-delta([[x & xs] md](if (empty? xs)md(let [y (first xs)d (abs (- y x))](recur xs (max md d)))))([s] (max-delta s 0)))(let [g (group-by first x)](zipmap (keys g) (for [v (vals g)](max-delta (map second v)))));; output: {"c" 0, "b" 5, "a" 120}
a*a2013-06-20 07:069 楼子序列是指某个字母对应的序列么?那例子里的子序列不是sorted的啊('a',2), ('a',34), ('a',3), ('a',123)'b【在 r**h 的大作中提到】: lst = [('a',2), ('b',3), ('a',34), ('a',3), ('b',8), ('c',3), ('a',123), ('b: ',6)]: def getMaxDiff(lst):: prev, maxDiff = {}, {}: for t in lst:: if t[0] not in prev.keys():: prev[t[0]] = t[1]: maxDiff[t[0]] = 0: else:: curDiff = t[1] - prev[t[0]]