Simple iteration in Python


#1
class solution:
    def solve(self, A, B):
        i, n, bulb = 0, len(A), 0
        while i < n:
            flag = False
            j = min(i+B-1, n-1)
            while j>=i-B+1 and j<n and j>0:
                flag = True
                bulb += 1
                i = j + B
                break
            j -= 1
            if not flag:
                return -1
        return bulb

#2

j = min(i+B-1, n-1) what this line mean , please explain


#3

it means, it will keep in boundation of length of an array. (i+B-1) is the maximum distance of glow light, if sometimes i+B-1 gives greater value than length of array then it will min() function takes n-1 value instead of i+B-1.
suppose for an example, n=8, B=3 and at iteration value i=4
value of i+B-1 = 4+3-1 = 6 here 6<(n-1) so j will take 6. but when iteration value iterate at i=6 then,

i+B-1 = 6+3-1 = 8 where 8>(n-1) this is out of size of an array then j will takes 7 instead of 8 because it means light glow distance is at last index of array.

j = min(i+B-1, n-1)

this function is use for maintaining the length boundation of an array.


#5
  def solve(self, A, B):
        i, n, bulb = 0, len(A), 0
        while i < n:   
            flag = False
            j = min(i+B-1, n-1)
            while j>=i-B+1 and j<n and j>0:
                if A[j] ==1:
                    flag = True
                    bulb += 1
                    i = j + B
                    break
                j -= 1
            if not flag:
                return -1
        return bulb

Your code does not checks the condition of whether the bulb is working(i.e 1 ) or not. and also decrementing the j should be inside the while loopPreformatted text


#6

please recheck once again the code. it accepting all the conditions which fulfil the question. j is already inside the while loop. or if you have any strong TC then please share that one which fail the case of this code.


#7

This is the code that I modified and shared I am talking about your code, where if A[j] == 1: the condition is missing