LeetCode 900 RLE Iterator

LeetCode 900

思路还是比较简单的,用两个指针来确定当前的位置,一个用于指向当前在数组中的位置,另外一个看当前位置上的已经用掉了几个,如果用完了,那么我们需要移动第一个指针,有定类似于进位。只是里面的一些细节需要注意。

class RLEIterator:

    def __init__(self, A: List[int]):
        self.a = A
        self.alen = len(self.a)
        self.index1 = 0
        self.index2 = 0

    def next(self, n: int) -> int:
        n += self.index2
        for i in range(self.index1, self.alen + 2, 2):
            if i >= self.alen:
            	#注意这里要设置一下到尾端了
                self.index1 = i
                return -1

            if n <= self.a[i]:                
                self.index1 = i
                self.index2 = n
                break
            else:
            	#超过当前位置的值,进位,移动到下一个
                n -= self.a[i]
        
        return self.a[self.index1+1]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值