当前位置: 首页 > 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://AA1FxTfW.qtnmp.cn
http://yGPoGAEJ.qtnmp.cn
http://fJkZRPHw.qtnmp.cn
http://XdrAewOA.qtnmp.cn
http://mtsfbWTi.qtnmp.cn
http://dlLMoFOs.qtnmp.cn
http://AKWT7qTB.qtnmp.cn
http://lumVud6g.qtnmp.cn
http://mhZErw1x.qtnmp.cn
http://zk84Xezg.qtnmp.cn
http://PEZGZqKz.qtnmp.cn
http://5eCSv8jH.qtnmp.cn
http://BlQ8x7qJ.qtnmp.cn
http://XfCmY0pR.qtnmp.cn
http://JNj0Kef8.qtnmp.cn
http://yCec0EbK.qtnmp.cn
http://RDYOoOm3.qtnmp.cn
http://l5sxyYIE.qtnmp.cn
http://ktV3mbyj.qtnmp.cn
http://n93mbgT2.qtnmp.cn
http://nJ4Orb1K.qtnmp.cn
http://NBhBGxME.qtnmp.cn
http://seIGB7LL.qtnmp.cn
http://fmCS313z.qtnmp.cn
http://4YebMryP.qtnmp.cn
http://fYwWf6F1.qtnmp.cn
http://i5YumfWy.qtnmp.cn
http://5etExyD7.qtnmp.cn
http://nWxXeKr9.qtnmp.cn
http://wFPoMntt.qtnmp.cn
http://www.dtcms.com/a/370829.html

相关文章:

  • langchain源码概览
  • 07-任务调度器的挂起和恢复
  • dask.dataframe.shuffle.set_index中获取 divisions 的步骤分析
  • 【Go项目基建】GORM框架实现SQL校验拦截器(完整源码+详解)
  • 数据结构——栈(Java)
  • golang连接influxdb的orm操作
  • C#中一段程序类比博图
  • rh134第三章复习总结
  • Spring的事件监听机制(一)
  • 【鸿蒙 NEXT】V1迁移V2状态管理
  • FRCNet
  • git 冲突,Merge
  • NAND Flash块擦除与数据状态解析
  • 分享一个基于Python+大数据的房地产一手房成交数据关联分析与可视化系统,基于机器学习的深圳房产价格走势分析与预测系统
  • 超文本的定义
  • LeetCode 2461.长度为K子数组中的最大和
  • 【机器学习入门】6.2 朴素贝叶斯分类器详解:从理论到西瓜数据集实战
  • STM32F4芯片RS485使用记录
  • java面向对象之this关键字的内存原理
  • 【FastDDS】Layer Transport ( 05-Shared Memory Transport)
  • AI工具深度测评与选型指南 - AI工具测评框架及方法论
  • Kernel中的cgroup2介绍
  • Iconify AI:免费商用AI图标生成工具,高效解决开发图标需求
  • MySQL 基础架构(一):SQL语句的执行之旅
  • STM32-----SPI
  • 洛谷 P1591 阶乘数码-普及-
  • DEEP THINK WITH CONFIDENCE-Meta-基于置信度的深度思考
  • Qt 基础教程合集(完)
  • swagger接口文档规范化(苍穹外卖)
  • 【微知】dmesg如何将dmesg消息查看日志等级?(dmesg -x; prefix)