0
点赞
收藏
分享

微信扫一扫

Python核心知识:pip使用方法大全

惠特曼 2024-10-02 阅读 18
c++算法

目录

一·题目:

二·详细思路汇总:

三·代码解答(带注释版):


一·题目:

leetcode原题链接:. - 力扣(LeetCode) 

二·详细思路汇总:

这里先剧透一下简单版思路哦:1.数组-1初始化;

                                                   2.定位找到x1,x2指向的整型;

                                                3.根据x1,x2是否指向同一整型,完成对x1左侧,x2右侧更改操作。

三·代码解答(带注释版):

class Solution {
public:
    //返回与x1所在整型的&的值
    int corresx1(int x){
        int cor=0;
        for(int i=0;i<=31-(x%32);i++){
            cor+=1<<i;
        }
        return cor;
    }
    //返回与x2所在整型的&的值
     
      int corresx2(int x1,int x2,int start,int end){
        int cor=0;
         int terminate=0;
         if(start==end) terminate=31-(x1%32);
         else terminate=31;
        for(int i=31-(x2%32);i<=terminate;i++){
            cor+=1<<i;
        }
       
        return cor;

    }
    vector<int> drawLine(int length, int w, int x1, int x2, int y) {
    vector<int> ret(length,-1);
    //把x1,x2精确定位到整型处:
       int flag = y * w / 32;
        int head = x1 / 32 + flag;
        int rear = x2 / 32 + flag;
   //分别处理x1前方和x2后方:
        ret[head] = ret[head]&corresx1(x1);
        ret[rear] = ret[rear] &corresx2(x1,x2,head,rear);
        


       //不合适的-1转回0:
        for(int i=0;i<length;i++){
            if(i<head||i>rear&&ret[i]==-1) 
            {
                ret[i]=0;
                
            }

        }
        return ret;


                          
    }
};
举报

相关推荐

0 条评论