将生产线上的面饼都翻至笑脸面
摸了一个星期的鱼…果然一放假就皮痒要懈怠…看来周末还是不能经常回家,老老实实呆学校里学习好了。
言归正传,之前谷歌办公室打电话来问我要不要试着申请一下他们的暑期实习…然后我跟着网申步骤发现…还要面试啊qaq我这个编程渣可怎么办,简历都不敢投了…但是还是翻了个小墙试着看了一下往年的题目。这大概是2017年某一个round的题…
题目大概意思就是,你有一个一次能翻连续k个薄饼的锅子,他们翻完顺序还是不变,但是只是正反面改变了。在队列头和尾处也一定要翻到k个饼,不能说将锅子的某一格不用上。完整题目如下:
这道题和数学系的小伙伴一起研究了一下,据说是可以严格证明没有其他讨巧的解题算法的。那么就明确的去使用暴力解法,从第一个"-"的面饼开始翻就好了,如果翻到最后没有留下“-”面的面饼,那么就输出我们共翻了多少次,因此要准备一个counter
。如果最后一个 为“-”面,那么当我们试图用 k的锅去翻的时候,肯定就越界了,因此需要加一个判断s[i] == '-'&& i + k > s.length
思路很简单,基本上就是两个for
循环慢慢检索过去,再加上一些判断。
刚开始写完的时候发现尴尬的是,因为输出那个counter
的值,放在循环里面么打印好几遍,放在循环外面么,就算是结果是impossible也会输出一个不需要的counter
。解决方法是当判断出是“impossible”的时候就将counter
置为负数然后break