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.pswp.cn/news/921524.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921524.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《MATLAB 批量把振动 CSV(含中文“序号/采样频率”)稳健转成 .mat:自动解析+统一换算+按 H/I/O/F-rpm-fs-load 命名》

一文搞定&#xff1a;批量把中文头信息的 CSV&#xff08;含“序号/采样频率”等&#xff09;稳健转成 .mat&#xff0c;并按规则重命名&#xff08;H/I/O/F-rpm-fs-load&#xff09;1. 项目背景 在振动/故障诊断采集里&#xff0c;我们经常得到一批 CSV 文件&#xff0c;文件名…

Unity与硬件交互终极指南:从Arduino到自定义USB设备

这篇教程将遵循“是什么-为什么-怎么做”的结构,从宏观思路讲起,再深入到具体的技术实现,并附上可以直接使用的详细代码和注释,确保不同水平的读者都能从中受益。 前言:当虚拟照进现实 在游戏开发和交互设计的世界里,我们常常满足于键盘、鼠标和手柄。但当你想要创造真正…

Tomcat 日志文件名的命名规范

1. 核心日志类型及命名规范 (1) Catalina 日志&#xff08;引擎级日志&#xff09; 文件名&#xff1a;catalina.<yyyy-MM-dd>.log说明&#xff1a;记录 Tomcat 启动、关闭、严重错误等全局事件。示例&#xff1a;catalina.2025-09-07.log (2) Access 日志&#xff08;访…

.vsdx文件转pdf、word、ppt等文件在线分享(免费版)

网址如下&#xff1a; https://www.easeconvert.com/visio-to-pdf/ 只需要把.vsdx文件放到网址中即可

如何在Docker容器之间进行通信?

目录 1. 使用 Docker 网络(推荐) 步骤: 特点: 2. 端口映射(主机中转) 步骤: 特点: 3. 使用 link(不推荐,已过时) 4. 跨主机容器通信 总结 在 Docker 中,容器之间的通信可以通过多种方式实现,选择哪种方式取决于你的具体需求(如网络隔离性、跨主机通信等…

从 “Hello AI” 到企业级应用:Spring AI 如何重塑 Java 生态的 AI 开发

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…

震惊!仅用10张照片就能随意编辑3D人脸?韩国KAIST最新黑科技FFaceNeRF解析!

FFaceNeRF模块 论文《FFaceNeRF: Few-shot Face Editing in Neural Radiance Fields》 深度交流Q裙&#xff1a;1051849847 全网同名 【大嘴带你水论文】 B站定时发布详细讲解视频 视频地址&#xff0c;点击查看论文详细讲解&#xff0c;每日更新&#xff1a; https://b23.t…

spring-ai-alibaba-deepresearch 学习(十四)——CoderNode

本篇为spring-ai-alibaba学习系列第四十篇前面介绍 ParalellExecutorNode 会为后续的 m 个 CoderNode 分配任务现在来看一下处理型任务的处理节点 coder_{i}该类节点主要负责执行一些操作&#xff0c;例如执行python代码、调用mcp等提示词以下是该文档的中文翻译&#xff1a;--…

基于STM32设计的激光充电控制系统(华为云IOT)_277

文章目录 一、前言 1.1 项目介绍 【1】项目开发背景 【2】设计实现的功能 【3】项目硬件模块组成 【4】设计意义 【5】国内外研究现状 【6】摘要 1.2 设计思路 1.3 系统功能总结 1.4 开发工具的选择 【1】设备端开发 【2】上位机开发 1.5 参考文献 1.6 系统框架图 1.7 系统原理…

【牛客拼数最大对比从左至右每位break与continue】2022-11-5

缘由牛客拼数最大问题&#xff0c;不从结果出发那种做法-编程语言-CSDN问答 思路倒序数后从右逐位比较大小 int 反序数(int n) {int nn 0;while (n)nn nn * 10 n % 10, n / 10;return nn; } void 牛客拼数位最大对比() {//4 7 13 4 246;3 13 312 343;3 1 2 3int a[20]{}, x…

【考研C语言编程题】数组元素批量插入实现(含图示+三部曲拆解)

【考研C语言编程题】数组元素批量插入实现&#xff08;含图示三部曲拆解&#xff09; 一、题目要求 编写C语言程序&#xff0c;实现将数组b的所有元素批量插入到数组a的指定位置&#xff08;位置从0开始计数&#xff09;。要求严格遵循“腾出空间→插入元素→更新长度”的操作三…

监控系统 | 脚本案例

1、监控系统中的cpu、内存、硬盘、、使用率超过80%进行邮件告警&#xff08;可使用邮箱QQ&#xff09;详细步骤说明&#xff1a;1. 脚本初始化#!/bin/bash&#xff1a;指定使用bash shell执行dateMax80&#xff1a;设置资源使用率阈值&#xff08;80%&#xff09;2. 资源监控CP…

Vulkan 学习(20)---- UniformBuffer 的使用

目录UniformBufferDescriptorSetLayout 和 VkBuffer顶点着色器定义描述符布局(DescriptorSetLayout)创建 UniformBuffer描述符池(DescriptorSet Pool)描述符集(DescriptorSet)更新描述符集使用描述符集使用多个 DescriptorUniformBuffer 本篇文档是通过 Uniform Buffer 的使用…

[光学原理与应用-461]:波动光学 - 波片实现偏振态的转换或调整

波片&#xff08;Wave Plate&#xff09;是一种基于双折射效应的光学元件&#xff0c;其核心功能是通过控制光波中寻常光&#xff08;o光&#xff09;和非寻常光&#xff08;e光&#xff09;的相位差&#xff0c;实现偏振态的转换或调整。以下是波片的主要功能及其原理的详细说…

Flutter之riverpod状态管理详解

一、riverpod状态管理中所涉及到的provider对比分析Provider 类型核心用途最佳适用场景优势劣势/注意事项Provider(v1)暴露一个恒定不变的&#xff08;或不需要Riverpod管理的&#xff09;对象或值。依赖注入&#xff08;如&#xff1a;Repository, Logger, ApiClient&#xff…

昇腾310i Pro固件说明

目录 驱动和固件 驱动固件文件 firware固件 24.2版本对应的固件 驱动和固件共同文件 烧结到flash中的固件 总结 启动流程 固件关系猜测 启动关键信息 efuse atu大小 GPU的bar 总结 驱动和固件 以最新的25.2 对应的驱动和固件为例说明&#xff1a; 驱动固件文件…

【LeetCode热题100道笔记】二叉树的右视图

题目描述 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5,null,4] 输出&#xff1a;[1,3,4] 解释&#xff1a;示例 2&am…

Redis《RedisSerializer》

文章目录RedisSerializer为什么要使用如何使用RedisSerializer总结RedisSerializer 为什么要使用 RedisTemplate 有默认的序列化器&#xff0c;但默认使用的 JdkSerializationRedisSerializer 存在一些问题&#xff1a; 序列化后的数据包含类信息等额外内容&#xff0c;导致…

基于开源AI大模型AI智能名片S2B2C商城小程序的文案引流与社交传播运营策略研究

摘要&#xff1a;本文聚焦开源AI大模型AI智能名片S2B2C商城小程序&#xff0c;探讨其文案引流与社交传播运营策略。阐述文案在引流中的重要性&#xff0c;分析开源AI大模型AI智能名片S2B2C商城小程序的特性&#xff0c;研究文案设计策略、社交传播机制及运营策略实施与效果评估…

NGINX vs HAProxy vs LVS:优势与选型分析

目录 1. 负载均衡的江湖:三巨头初探 2. NGINX:全能选手的多面魅力 NGINX 核心优势 NGINX 的短板 NGINX 实战案例 3. HAProxy:调度大师的精细之道 HAProxy 核心优势 HAProxy 的短板 HAProxy 实战案例 4. LVS:内核猛兽的极致性能 LVS 核心优势 LVS 的短板 LVS 实…