1041 困于环中的机器人
在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意:
北方向 是y轴的正方向。
南方向 是y轴的负方向。
东方向 是x轴的正方向。
西方向 是x轴的负方向。
机器人可以接受下列三条指令之一:
"G":直走 1 个单位
"L":左转 90 度
"R":右转 90 度
机器人按顺序执行指令 instructions,并一直重复它们。
只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。
·解题思路
这道题一直没有思路,还是看评论区的大神才知道。简单总结一下吧
1.最终判断是否能够困于环中的标准就是——当机器人的方向第一次转为原始(向上)时候,如果该位子为原点,那么就会一直困于环中。反之,就不会被困于环中........想到这点很重要........
2.在理解结束条件之后就很好理清思路了——
首先,设定方向d(0-上,1-左,2-下,3-右)。遍历指令,如果是L则加一,R则减一
第二,根据d的方向,遇见G的时候,进行x或者y的坐标变换
第三,结束条件
·代码
class Solution(object):
def addBinary(self, a, b):
def addzereo(a,b):
a_size = len(a)
b_size = len(b)
max = a_size if a_size >= b_size else b_size
a = a.rjust(max, '0')
b = b.rjust(max, '0')
return a,b
def convert_to_num(lst):
num_str = ''.join(str(digit) for digit in lst)
num_str = str(num_str)
return num_str
a,b = addzereo(a,b)
last = []
carry = 0
for i in range(len(a) -1 ,-1, -1):
digit_num = int(a[i]) + int(b[i]) +carry
last.insert(0, digit_num % 2)
carry = digit_num // 2
if carry :
last.insert(0,carry)
result = convert_to_num(last)