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

LeetCode 刷题【66. 加一、67. 二进制求和】

66. 加一

自己做

解:逢十进位

class Solution {
public:vector<int> plusOne(vector<int>& digits) {int add = 1;                //进位vector<int> res(digits.size() + 1); //防止多一位的情况:9 + 1 = 10for(int i = (int)digits.size() - 1; i >= 0; i--){int num = digits[i] + add;  //当前相加的结果add = num / 10;             //下一个数的进位res[i + 1] = num % 10;      //余位放进结果中digits[i] = num % 10;       //余位放进结果中}//如果相加后的结果比原先的数多一位,那么就补上进位,否则就返回正常的结果(比如8+1 = 9不会多一位)if(add != 0){res[0] = add;return res;}elsereturn digits;}
};

67. 二进制求和

自己做

解:同十进制处理

class Solution {
public:string addBinary(string a, string b) {int add = 0;                    //进位int p = (int)a.size() - 1;      //a的尾指针int q = (int)b.size() - 1;      //b的尾指针bool a_or_b = true;             //判断a与b谁更长if(a.size() < b.size())a_or_b = false;while(p >= 0 && q >= 0){int num = a[p] - '0' + b[q] - '0' + add;            //本位相加结果add = num / 2;                          //进位if(a_or_b)                              //如果a更长就加到a上去a[p] = num % 2 + '0';else                                    //如果b更长就加到b上去b[q] = num % 2 + '0';p--;q--;}while(p >= 0){                       //加完以后还剩下aint num = a[p] - '0' + add;            //本位相加结果add = num / 2;                          //进位a[p--] = num % 2 + '0';          }while(q >= 0){                       //加完以后还剩下bint num = b[q] - '0' + add;            //本位相加结果add = num / 2;                          //进位b[q--] = num % 2 + '0';            }//如果相加后的结果比原先的数多一位,那么就补上进位,否则就返回不考虑进位的结果if(add != 0){if(a_or_b)return "1" + a;elsereturn "1" + b;}else{if(a_or_b)return a;elsereturn b;}}
};

解:逻辑运算符处理

class Solution {
public:string addBinary(string a, string b) {bool add = false;                //进位int p = (int)a.size() - 1;      //a的尾指针int q = (int)b.size() - 1;      //b的尾指针bool a_or_b = true;             //判断a与b谁更长(默认a更长)if(a.size() < b.size())         //如果b更长a_or_b = false;while(p >= 0 && q >= 0){if(a[p] == b[q]){                       //要么同为1,要么同为0,不管如何,a+b相加结果的余位都为0bool is_one = true;                 //判断是否同为1if(a[p] == '0')is_one = false;if(a_or_b)                              //如果a更长就加到a上去a[p] = add + '0';else                                    //如果b更长就加到b上去b[q] = add + '0';if(is_one)                     //1 + 1有进位的情况add = true;else                           //0 + 0无进位的情况add = false;}else{                       //两者为1和0,不管如何,a+b相加结果的余位都为1//有进位的情况=> 1 + 0 + 1,进位1,余位0,无进位的情况=> 1 + 0 + 0,进位0,余位1if(a_or_b)                              //如果a更长就加到a上去a[p] = '1' - add;else                                    //如果b更长就加到b上去b[q] = '1' - add; //进位保持不变}p--;q--;}while(p >= 0){                       //加完以后还剩下aif(!add)                         //如果没有进位就直接结束计算break;else{                            //如果有进位就要考虑计算if(a[p] == '1'){             //原位1与进位1相加a[p] = '0';//进位保持不变}else{                        //原位0与进位1相加a[p] = '1';add = false;}}p--;}while(q >= 0){                       //加完以后还剩下aif(!add)                         //如果没有进位就直接结束计算break;else{                            //如果有进位就要考虑计算if(b[q] == '1'){             //原位1与进位1相加b[q] = '0';//进位保持不变               }else{                        //原位0与进位1相加b[q] = '1';add = false;}}q--;}//如果相加后的结果比原先的数多一位,那么就补上进位,否则就返回不考虑进位的结果if(add){if(a_or_b)return "1" + a;elsereturn "1" + b;}else{if(a_or_b)return a;elsereturn b;}}
};

http://www.xdnf.cn/news/1477135.html

相关文章:

  • Linux bzip2 命令使用说明
  • 大数据毕业设计选题推荐-基于大数据的宫颈癌风险因素分析与可视化系统-Spark-Hadoop-Bigdata
  • Day22_【机器学习—集成学习(2)—Bagging—随机森林算法】
  • 学习nginx location ~ .*.(js|css)?$语法规则
  • Error metrics for skewed datasets|倾斜数据集的误差指标
  • 区块链论坛社区
  • 在 ES6 中如何提取深度嵌套的对象中的指定属性
  • 【111】基于51单片机停车场车位管理系统【Proteus仿真+Keil程序+报告+原理图】
  • 从RAW到BMP:工业视觉系统图像格式的转换与优化
  • 数据结构之二叉树(1)
  • STM32-----SPI
  • JUC、JVM八股补充
  • YOLOv8 在 Intel Mac 上的 Anaconda 一键安装教程
  • JBoltAI:赋能AI数智化升级的Java级引擎——深入解析企业级AI开发框架的核心能力与行业价值
  • 待定系数法分解分式
  • 后端(JDBC)学习笔记(CLASS 1):基础篇(一)
  • VBA之Excel应用第四章第七节:单元格区域的整行或整列扩展
  • 进阶向:密码生成与管理工具
  • 【PCIe EP 设备入门学习专栏 -- 8.1.3 PCIe EP AXI Bridge Module】
  • 发布vue项目、nginx配置及问题场景(history)
  • 服务器内存和普通计算机内存在技术方面有什么区别?
  • 前端入门——案例一:登录界面设计(html+css+js)
  • 【xss基本介绍】
  • 风电塔筒有毒有害气体监测控制系统
  • Maimo-AI驱动的行业研究工作平台
  • 理想汽车智驾方案介绍 4 World model + 强化学习重建自动驾驶交互环境
  • PostgreSQL与Greenplum常见连接客户端
  • 详解 Java 中的 CopyOnWriteArrayList
  • [光学原理与应用-420]:非线性光学 - 线性思维与非线性思维
  • kafka集群的安装与部署