classSolution:defdrawLine(self, length:int, w:int, x1:int, x2:int, y:int)-> List[int]:
ans =[0for i inrange(length)]
arr =[0for i inrange(32* length)]## 绘制直线if x1 > x2:
x1,x2 = x2,x1
for i inrange(x1+w*y,x2+1+w*y):
arr[i]=1## 补码转原码
start =int(y * w /32)for i inrange(w*y,w*(y+1),32):## 该行每个int开头符号位 if arr[i]==1:for j inrange(i+1,i+32):if arr[j]==1:
arr[j]=0else:
arr[j]=1for m inrange(i+31,i,-1):if arr[m]==1:
arr[m]=0else:
arr[m]=1break
num,factor =0,1for l inrange(i+31,i,-1):
num += arr[l]* factor
factor *=2
ans[start]=-num if arr[i]==1else num
start +=1return ans