皮卡丘python写leetcode_Day8

本文讨论了一个关于机器人在无限平面上按照指令(L,R,G)移动的问题,关键在于判断机器人方向首次回到初始状态时是否位于原点,以此确定是否存在环。提供了解题思路和Python代码实现Solution类中的addBinary方法来处理这个问题。
摘要由CSDN通过智能技术生成

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)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值