首页 > 试题广场 >

像素设定

[编程题]像素设定
  • 热度指数:7939 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

有一个单色屏幕储存在一维数组中,给定表示屏幕的数组screen(数组中元素二进制表达的每一位分别对应连续的8个像素,二进制位数的从低到高对应像素的从左到右),用函数实现将第x到第y个像素涂上颜色(像素标号从零开始),返回涂色后的新的屏幕数组。请尝试尽量使用最快的办法并保证输入数据合法性。

测试样例:
[0,0,0,0,0,0],0,47
返回:[255,255,255,255,255,255]
int[] binary = {1,2,4,8,16,32,64,128};

        int i = 0;
        while (i< screen.length *8){

            if(i >= x && i <=y){
                int k = i / 8;

                int bit = i % 8;
                int tmp = screen[k];
                tmp = tmp >> bit;
                if(tmp %2 == 0){
                    screen[k] += binary[bit];
                }
            }

            i++;
        }

        return screen;
    }

发表于 2020-07-08 16:47:42 回复(0)