首页 > 编程语言 >#yyds干货盘点# LeetCode程序员面试金典:绘制直线

#yyds干货盘点# LeetCode程序员面试金典:绘制直线

时间:2022-12-30 18:35:26浏览次数:43  
标签:yyds int 32 像素点 length 金典 x2 sb LeetCode

题目:

已知一个由像素点组成的单色屏幕,每行均有 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]

代码实现:

class Solution {
public int[] drawLine(int length, int w, int x1, int x2, int y) {
StringBuilder sb = new StringBuilder();
// 计算字符串的哪些位置需要置为1。
int start = y * w + x1, end = y * w + x2;
for(int i = 0;i < 32 * length; ++i){
if(sb.length() >= start && sb.length() <= end){
sb.append('1');
}
else{
sb.append('0');
}
}

int[] result = new int[length];
// 以32位为单位截取字符串转化为整型。
for(int i = 0;i < length; ++i){
// 注意此处int类型无法处理32位的1。可以使用Integer.parseUnsignedInt()或者Long.parseLong()方法。
result[i] = Integer.parseUnsignedInt(sb.substring(i * 32, i * 32 + 32), 2);
}
return result;
}
}

标签:yyds,int,32,像素点,length,金典,x2,sb,LeetCode
From: https://blog.51cto.com/u_13321676/5981144

相关文章

  • #yyds干货盘点# 名企真题专题:删除重复字符
    1.简述:描述牛牛有一个由小写字母组成的字符串s,在s中可能有一些字母重复出现。比如在"banana"中,字母'a'和字母'n'分别出现了三次和两次。但是牛牛不喜欢重复。对于同一个字......
  • #yyds干货盘点# 名企真题专题:顺时针打印数字矩阵
    1.简述:描述给定一个数字矩阵,请设计一个算法从左上角开始顺时针打印矩阵元素输入描述:输入第一行是两个数字,分别代表行数M和列数N;接下来是M行,每行N个数字,表示这个矩阵的所有元......
  • 递归移除链表元素、翻转链表(leetcode easy 203、206)、设计链表(leetcode medium 707
    移除链表元素题目链接:https://leetcode.cn/problems/remove-linked-list-elements/思路:主要考虑移除元素后需要让被移除元素前置节点的next指向其后置节点,采用......
  • leetcode-557. 反转字符串中的单词 III
    557.反转字符串中的单词III-力扣(Leetcode)与代码[[leetcode-541.反转字符串II]]相关联,swapStrBytes函数,使用了上次的代码funcreverseWords(sstring)string{......
  • leetcode-551. 学生出勤记录 I
    551.学生出勤记录I-力扣(Leetcode)字符串序列计数funccheckRecord(sstring)bool{absentCnt:=0cLateCnt:=0fori:=0;i<len(s);i++{......
  • Leetcode209
    209.MinimumSizeSubarraySum        i , s , l = 0, 0, 0        for j in range(len(nums)):            s += nums[j......
  • 代码随想录算法训练营第二天LeetCode977, 209, 59
    代码随想录算法训练营第二天|LeetCode977,209,59LeetCode977有序数组的平方题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array///使用stl的排序,毫无算......
  • leetcode-543. 二叉树的直径
    543.二叉树的直径-力扣(Leetcode)深度优先遍历,每个节点的直径等于左子树的最大深度加上右子树的最大深度,取一个最大值即可/***Definitionforabinarytreenode.......
  • #yyds干货盘点#linux下安装curl
    下载curl下载地址:​​https://curl.haxx.se/download...​​你也可以下载旧版的curl:​​https://curl.haxx.se/download/​​wgethttps://curl.haxx.se/download/curl-7.30......
  • #yyds干货盘点#linux命令测网速
    常用的测试工具有fast、speedtest、iPerf。fast是Netflix提供的一项服务,这不仅可以通过命令行来使用,而且可以直接Web端使用。iPerf是一个网络性能测试工具,它可以测试TCP和U......