怎么样做长久的电影网站,网站服务器建立,河北邯郸中考成绩查询网站,青岛网站建设电话文章目录 一、题目二、Java 题解 一、题目 已知一个由像素点组成的单色屏幕#xff0c;每行均有 w 个像素点#xff0c;所有像素点初始为 0#xff0c;左上角位置为 (0,0)。 现将每行的像素点按照「每 32 个像素点」为一组存放在一个 int 中#xff0c;再依次存入长度为 le… 文章目录 一、题目二、Java 题解 一、题目 已知一个由像素点组成的单色屏幕每行均有 w 个像素点所有像素点初始为 0左上角位置为 (0,0)。 现将每行的像素点按照「每 32 个像素点」为一组存放在一个 int 中再依次存入长度为 length 的一维数组中。 我们将在屏幕上绘制一条从点 (x1,y) 到点 (x2,y) 的直线即像素点修改为 1请返回绘制过后的数组。
注意
用例保证屏幕宽度 w 可被 32 整除即一个 int 不会分布在两行上
示例1: 输入 length 1, w 32, x1 30, x2 31, y 0 输出 [3] 解释 在第 0 行的第 30 位到第 31 位画一条直线屏幕二进制形式表示为 [00000000000000000000000000000011]因此返回 [3] 示例2: 输入 length 3, w 96, x1 0, x2 95, y 0 输出 [-1, -1, -1] 解释 由于二进制 11111111111111111111111111111111 的 int 类型代表 -1因此返回 [-1,-1,-1] 提示
1 length 10^51 w 3 * 10^50 x1 x2 w0 y 10 点击此处跳转题目。
二、Java 题解 确定左右端点后依据位置进行赋值即可具体代码如下
class Solution {public int[] drawLine(int length, int w, int x1, int x2, int y) {int[] ans new int[length];int col w / 32, start x1 / 32 y * col, end x2 / 32 y * col;int left (x1 % 32 0 ? 0 : 1 (32 - x1 % 32)) - 1;int right -(1 (31 - x2 % 32));if (start end) ans[start] left right 1;else {ans[start] left;for (int i start 1; i end; i) ans[i] -1;ans[end] right;}return ans;}
}时间0 ms击败 100.00% 使用 Java 的用户内存40.81 MB击败 95.08% 使用 Java 的用户