1 | 绘制直线。有个单色屏幕存储在一个一维数组中,使得32个连续像素可以存放在一个 int 里。屏幕宽度为w,且w可被32整除(即一个 int 不会分布在两行上),屏幕高度可由数组长度及屏幕宽度推算得出。请实现一个函数,绘制从点(x1, y)到点(x2, y)的水平线。 |
题目的意思
用一维数组来存储所有像素值:
- length是结果数组的长度是length;
- w是当前屏幕宽度,单位是像素。除以32就是一行用多少个int表示;
- 高度就是length*32 / w,实际计算没啥用。y+1别超过这个值就可以;
- 题目要求在第y行画一条直线(0开始计数)。像素位置是从x1到x2;
- 图像的坐标是左上角为原点,水平向右x递增,水平向下是y递增;
所以,题目中的示例改一改就是这样的:
length = 3, w = 32, x1 = 18, x2 = 28, y = 2
只用1个int,表示一个高度为3,宽度为32的屏幕,绘制的位置第2行(0开始计数)是从18到28
1 | 0000 0000 0000 0000 0000 0000 0000 0000 |
1 | class Solution { |
位运算
1 | class Solution { |
参考文献