当前位置:网站首页>面试题 05.08. 绘制直线
面试题 05.08. 绘制直线
2022-06-09 12:25:00 【子言慕雨】
题
已知一个由像素点组成的单色屏幕,每行均有 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^5
1 <= w <= 3 * 10^5
0 <= x1 <= x2 < w
0 <= y <= 10
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/draw-line-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
这个题用Python不好写 原因是32个1在Python中表示4294967295 即负数 补码显示不出来 c++和java显示正常
代码
class Solution
{
public:
vector<int> drawLine(int length, int w, int x1, int x2, int y)
{
vector<int> ans(length);
for (int i = 0; i < length; i++)
ans[i] = 0;
int size = w / 32;
int index = y * size;
for (int i = 0; i < size; i++){
int temp = 0;
for (int j = 0; j < 32; j++){
int test = j + i * 32;
if (test>=x1&&test<=x2)
temp += 1 << 31 - j;
}
ans[i + index] = temp;
}
return ans;
}
};
边栏推荐
- ES6 basic grammar knowledge
- 郑州埃文科技安全头条
- [Loki introduction, deployment, use]
- Database day-3
- BI报表系统有什么特点
- C语言线性表--静态链表
- Yunna RFID asset management, advantages of RFID asset management system
- How can PostgreSQL in k8s export query results and import them to the database on the local windows machine
- Event storm method of DDD modeling methodology
- "Forget to learn again" shell Basics - 28. Description of conditional expressions in awk
猜你喜欢

云呐|RFID资产管理,rfid资产管理系统优势

【C语言练习——打印菱形及其变形】

JVM运行时内存区系列之方法区

云呐|固定资产管理制度及流程,相关流程

How is the Internet topology constructed? What does it represent?
![[C language practice - printing odd and even digits of integer binary]](/img/6a/a69040a2b683b343a0c628e549aef8.png)
[C language practice - printing odd and even digits of integer binary]

Software test engineers teach you how to make test plans

【C语言练习——打印正方形及其变形】

2021年10月4日Facebook史上最严重宕机复盘分析

Yunna administrative unit fixed assets management system, unit fixed assets management measures
随机推荐
数据库day-6
云呐|服务器监控可视化工具
[log system]
Differences between const, VaR and let defined variables in JS
Yunna RFID asset management, advantages of RFID asset management system
周博磊《模型可解释性年度进展概述》20200805
k8s中的postgresql怎么导出查询的结果,并导入到本地windows机器上的数据库
Database day-4
Common mistakes in data analysis
【C语言练习——打印菱形及其变形】
Zhoubolei annual progress overview of model interpretability 20200805
云呐|服务器监控的重要性,监控管理服务器有什么作用
树上差分啊
Database day-2
数据库day-1
云呐|固定资产如何管理比较好?公司固定资产怎么管理?
Yuna server monitoring visualization tool
Database day-5
Zhengzhou Evan technology security headlines
C语言 队列--顺序队列