只想好好看个新闻,却出乎意料的难

我们的生活环境中充斥着各种数据信息,海量数据浪费了很多人的时间和精力;低质量内容又错误引导了一波人。如何去改善这个环境?
比如新闻类App,单手划过几页列表想找几个有价值有意义的新闻出乎意料的难。倘若某些用户量过亿的新闻媒体软件每日传递杂而不堪的内容,会造成多大的时间精力损耗?
我们的媒体有义务去维持一个精确简洁规范的信息环境,将有价值的信息以更为高效的方式传递给读者是每个媒体义不容辞的责任。
希望大家能够正视并珍惜自己的时间,有效的去分配使用,尝试对不良媒体说不。避免在无益内容上浪费了自己宝贵的时间,爱看文章、爱读新闻是好事,但要确保信息的正确可靠性后再阅读是很有必要的。

用脸贴着问题想问题

平时喜欢站在高处俯看问题,觉得很自在,有种掌控全局的感觉。比如画流程图解决某个功能性问题,一目了然,没有技术难点的话,基本一下子就能解决问题。

但有时候有必要试着放低身板,并肩站在问题身旁寻求解决办法。身在山中也无妨,由小而大,从局部推至整体,有时候可以更好的解决问题。

比如下面这个小问题:

某股票价格,一定时间t内价格变化为P1, P2, P3, …, Pn. 则不同时间点的价格差为P_{j}-P_{i} ( 时间点 j > 时间点 i ). 求这段时间t内的最大价格差。(n >= 500000, 1 <= P_{i} <= 10^{9} )

从整体看,会很容易想出把每个差求一遍,最后得出最大差值:(maxV: 当前最大价格差,max: 求两者间较大者,min: 求两者间较小者)

for j ( 1 ~ n-1 )
  for i ( 0 ~ j-1 )
    maxV = max ( maxV, P[j]-P[i] )

这样可以解决问题,但效率不行,n比较大,双循环会很慢。

此时把眼光聚焦到每个时间点,从时间点0开始思考,然后依次推向最后时间点n,会发现一次循环便可以解决问题:(maxV: 当前最大价格差,minP: 当前最小价格,max: 求两者间较大者, min: 求两者间较小者)

minV = P[0]
for j ( 1 ~ n-1 )
  maxV = max ( maxV, P[j]-minP )
  minP = min ( minP, P[j] )

即,从任何一个时间点往回看的话,该时间点的最大价格差就是:

该时间点价格 - 当前最小价格) 或 (之前保存的最大价格差