zoukankan      html  css  js  c++  java
  • LeetCode–绘制直线

    LeetCode–绘制直线

    博客说明

    文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

    说明

    面试题 05.08. 绘制直线

    题目

    绘制直线。有个单色屏幕存储在一个一维数组中,使得32个连续像素可以存放在一个 int 里。屏幕宽度为w,且w可被32整除(即一个 int 不会分布在两行上),屏幕高度可由数组长度及屏幕宽度推算得出。请实现一个函数,绘制从点(x1, y)到点(x2, y)的水平线。

    给出数组的长度 length,宽度 w(以比特为单位)、直线开始位置 x1(比特为单位)、直线结束位置 x2(比特为单位)、直线所在行数 y。返回绘制过后的数组。

    示例1:

     输入:length = 1, w = 32, x1 = 30, x2 = 31, y = 0
     输出:[3]
     说明:在第0行的第30位到第31为画一条直线,屏幕表示为[0b000000000000000000000000000000011]
    

    示例2:

     输入:length = 3, w = 96, x1 = 0, x2 = 95, y = 0
     输出:[-1, -1, -1]
    

    Java

    思路

    使用位运算

    代码
    class Solution {
        public int[] drawLine(int length, int w, int x1, int x2, int y) {
            int[] res = new int[length];
            int temp = y * w / 32;
            int head = x1 / 32 + temp;
            int rear = x2 / 32 + temp;
            for(int i = head; i <= rear; i++){
                res[i] = -1;
            }
            res[head] = res[head] & -1 >>> x1 % 32;
            res[rear] = res[rear] & Integer.MIN_VALUE >> x2 % 32;
            return res;
        }
    }
    

    感谢

    leetcode

    以及勤劳的自己
    关注公众号: 归子莫,获取更多的资料,还有更长的学习计划

  • 相关阅读:
    show master status, show slave status中的Executed_Gtid_Set
    MySQL分库分表
    数据库的读锁和写锁在业务上的应用场景总结
    MySQL死锁分析
    Java接口幂等性
    MySQL读写分离原理
    mysql 安装参考
    关于我
    【2020五校联考NOIP #6】最佳观影
    【2020五校联考NOIP #6】三格缩进
  • 原文地址:https://www.cnblogs.com/guizimo/p/13456631.html
Copyright © 2011-2022 走看看