当前位置: 首页 > article >正文

【负二进制】个人练习-Leetcode-1073. Adding Two Negabinary Numbers

题目链接:https://leetcode.cn/problems/adding-two-negabinary-numbers/description/

题目大意:给两个负二进制的数组arr1[], arr2[],从前往后是高位到低位。求两个数组的和,格式与前相同。

思路:重要的点是考虑进位是如何做的,因为是负二进制,那么当上一位的和是大于等于2的时候,先%2,然后进位的时候应该进的是-1;而当上一位的和是-1时(考虑两位是0,进位为-1的情况),应该把本位置1,再进位1。剩下的情况就是正常的0和1,直接写入就好。

因为不能有前导0,所以最后需要循环判断一下去掉前导0.

完整代码

class Solution {
public:
    vector<int> addNegabinary(vector<int>& arr1, vector<int>& arr2) {
        int i = arr1.size() - 1, j = arr2.size() - 1;
        int carry = 0;
        vector<int> res;
        while (i >= 0 || j >= 0 || carry != 0) {
            int tmp = carry + (i >= 0 ? arr1[i] : 0) + (j >= 0 ? arr2[j] : 0);

            if (tmp >= 2) {
                res.push_back(tmp % 2);
                carry = -1;
            }
            else if (tmp == -1) {
                res.push_back(1);
                carry = 1;
            }
            else {
                res.push_back(tmp);
                carry = 0;
            }
            i--;
            j--;
        }
        while (res.size() > 1 && res.back() == 0)
            res.pop_back();  
        reverse(res.begin(), res.end());
        return res;
    }
};

http://www.kler.cn/news/367918.html

相关文章:

  • 软考:GPU算力,AI芯片
  • Java中的Java EE是什么?它有哪些应用场景和优势?
  • python 结构作业
  • 【容器】容器化详解:提升开发与运维效率的关键技术
  • riscv uboot 启动流程分析 - SPL启动流程
  • 【C语言】预处理(预编译)详解(上)(C语言最终篇)
  • 从零开始:用Spring Boot搭建厨艺分享网站
  • Linux:指令再认识
  • 使用 Python 实现智能地震预警系统
  • Python画笔案例-094 绘制 神奇彩条动画
  • 【报错】FastGPT本地部署通义千问,报错undefined 当前分组 default 下对于模型 qwen:7b 无可用渠道 【搭建企业级知识库问答系统】
  • 视觉工具与C#联合开发图片格式转换
  • 猫头虎 分享已解决Bug || RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED 解决方案
  • 第十一部分 Java 数据结构及集合
  • 速盾:高防cdn怎么拦截恶意ip?
  • Matlab数字图像处理——基于形态学处理的硬币计数系统(含m文件和GUI)
  • 华为原生鸿蒙操作系统的发布有何重大意义和影响:
  • PHP-FPM 性能配置优化
  • 面试宝典(四):Java8的新特性
  • Android 应用申请 Google MBA权限
  • Vue2 关于指令
  • 【PHP】ThinkPHP获取请求的域名及前缀
  • 直播系统源码技术搭建部署流程及配置步骤
  • 嵌入式Linux的AXI平台(platform)驱动教程
  • LinkedList和链表之刷题课(下)
  • 面试域——技术面试准备