problem:
tips:
int max = 1<<31-1; 等同于1<<(31-1),因为-优先级大于左移/右移。
如果int max = 1<<31,结果max=-2147483648,因为int溢出了,INT_MAX + 1 = INT_MIN。对于int :2147483647 + 1 = -2147483648。
正确写法应该是:int max = (1<<31)-1;中间应该是转换成了unsigned int。
另外一点,这个算法用的是动态规划,但是如果不保存中间结果,必然超时,然而,题目要求只用O(n)的空间复杂度(n为行数),则需要保存的数据应该是每一行一个,每次保存下一行的右邻居的值,并且每返回一层,将结果覆盖。(具体见算法,比较复杂)。