摘要: 这个题确实太容易错了。 我已经做了2遍了,之前都是套用reverse List 1中的函数。 现在尝试用新方法,在一个函数里完成,结果又错了。 事实证明,永远不要想当然!!!白板编程真的是要求,你对每一行代码都知道在做什么!尤其是边界条件。 因为没有编译调试环境,写错了,你根本看不出来,没有修改的机 阅读全文
posted @ 2017-12-11 19:24 newbird2017 阅读(128) 评论(0) 推荐(0)
摘要: 要求的条件是: 1、每个人最少一个糖果。 2、相邻的小朋友,要保证,评分高的比评分低的糖果多。 如果从一侧扫描的话,容易确定的就是递增序列,只要上升1个就够了。 容易出现问题的就是:遇到下降期,或者相邻的数相等,要怎么处理。 直接给1?或者减1?不行,搞不好可能出现负数。 比如 1 2 4 3 2 阅读全文
posted @ 2017-12-11 16:27 newbird2017 阅读(118) 评论(0) 推荐(0)
摘要: 一,笨方法 o(n^2)。果然看完别人的解法就自惭形秽啊!! 我用的动态规划方法。 比如输入 i: 0 1 2 3 4 ———————————————— a[i]: 2 3 1 0 4 直接利用原来的数组计算。 a[i]>0 表示从a[i]出发可以达到终点,否则a[i] = 0。 首先,a[4]无论 阅读全文
posted @ 2017-12-11 11:50 newbird2017 阅读(163) 评论(0) 推荐(0)
摘要: 怎么判断无解呢? 循环多少次算无解? 首先,start不保证是连续变化的。所以你记录了第一次的start,后面未必一定经过这个值。可能会跳过去。导致无限循环。比如gas=[2,4],cost=[3,4]的情况。 start = 0, i = 0 时候, sum = -1 < 0,所以 sum = 0 阅读全文
posted @ 2017-12-11 10:04 newbird2017 阅读(160) 评论(0) 推荐(0)
摘要: 第一眼看到就是枚举,回溯法。 n位的ans就是在n-1的ans的基础上,每一个在首位加上1。 但是有个难点,要保证相邻两数之间只有一位在变化,怎么办? 首先 00 00 01 00 01 11 10 本来是傻乎乎的,直接加的,没有保证只变化1位。 后来发现,从00到01是只变了1位,那么我们给01加 阅读全文
posted @ 2017-12-11 09:30 newbird2017 阅读(153) 评论(0) 推荐(0)