LeetCode题(66,69,35,88)--《c++》
66.加一
//
// Created by wxj05 on 2024/7/20.
//
//法一
class Solution {
public:vector<int> plusOne(vector<int>& digits) {bool carry = true; // 进位标志for (int i = digits.size() - 1; i >= 0 && carry; --i) {digits[i] += 1;carry = digits[i] >= 10; // 更新进位标志if (carry) {digits[i] %= 10; // 清零当前位}}if (carry) {digits.insert(digits.begin(), 1); // 如果还有进位,说明需要在最前面添加1}return digits;}
};
//法二
class Solution {
public:vector<int> plusOne(vector<int>& digits) {int len=digits.size();int jinwei=0;//进位digits[len-1]+=1;//最后一位加一for(int i=len-1;i>=0;i--){digits[i]+=jinwei;jinwei=digits[i]/10;digits[i]%=10;if(jinwei==0) return digits;}//如果全为9vector<int>digit(len+1);digit[0]=1;return digit;}
};
方法一
逻辑:
从数组的最后一位开始,尝试加一。
检查是否产生进位(digits[i] >= 10)。
如果产生进位,将当前位清零(digits[i] %= 10)并继续向前检查。
如果遍历完整个数组后仍有进位,意味着整个数加一后超过了最大表示范围,需要在数组最前面插入一个1。
方法二
逻辑:
同样从数组的最后一位开始,尝试加一。
计算进位,并更新当前位。
如果在遍历过程中任何时刻进位变为0,可以直接返回结果,因为后面的位不会再有进位影响。
如果遍历完整个数组后仍有进位,创建一个新的数组,长度比原数组多一位,并在最前面放置1。
69.x的平方根
//
// Created by wxj05 on 2024/7/20.
//
class Solution {
public:int mySqrt(int x) {int stare=0,end=x;int mid=(stare+end)/2;while(stare<=end){if((long long)mid*mid==x){return mid;}else if((long long)mid*mid>x){end=mid-1;mid=(stare+end)/2;}else{stare=mid+1;mid=(stare+end)/2;}}return mid;}
};二分查找算法
循环条件stare<=end确保搜索区间有效。
使用(long long)mid*mid是为了防止整数溢出,因为mid*mid可能超出int类型的范围。
如果mid的平方等于x,则mid就是我们寻找的平方根的整数部分,直接返回。
如果mid的平方大于x,说明平方根在mid的左侧,因此更新end为mid-1。
如果mid的平方小于x,说明平方根在mid的右侧,因此更新stare为mid+1。
注:mid*mid前面一定要加上long long防止整数溢出。
35.搜索插入位置
//
// Created by wxj05 on 2024/7/20.
//
class Solution {
public:int searchInsert(vector<int>& nums, int target) {int l=0,r=nums.size()-1,mid;while(l<=r){mid=(l+r)/2;if(nums[mid]==target){return mid;}else if(nums[mid]>target){r=mid-1;}else{l=mid+1;}}return r+1;}
};二分查找算法
初始化左边界l为0,右边界r为nums.size()-1。
在l和r之间计算中间位置mid。
循环条件l<=r确保搜索区间有效。
如果nums[mid]等于target,则找到了目标值,返回mid作为其索引。
如果nums[mid]大于target,说明target应该在mid的左侧,因此更新右边界r为mid-1。
如果nums[mid]小于target,说明target应该在mid的右侧,因此更新左边界l为mid+1。当循环结束时,如果未找到target,r+1将指示target应被插入的位置。这是因为当循环结束时,r和l将分别位于target应插入位置的左右两侧,且由于l最终会超过r,所以r+1将给出正确的插入位置。
88.合并两个有序数组
class Solution {
public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {int i=m+n-1;while(m>0 && n>0){if(nums1[m-1]>nums2[n-1]){nums1[i]=nums1[m-1];i--;m--;}else{nums1[i]=nums2[n-1];i--;n--;}}while(n>0){nums1[i]=nums2[n-1];i--;n--;}}
};初始化一个指针i指向nums1的末尾,即m+n-1的位置,这是合并后数组的最后一个位置。
在m>0 && n>0的条件下,比较nums1和nums2的末尾元素,将较大的元素放入nums1的当前位置i,然后递减i,同时减少对应的m或n,以追踪剩余待处理的元素。
当nums1和nums2中都有元素时,较大的元素会被放置在nums1的末尾,保持了合并后数组的有序性。
当nums2中还有元素而nums1中已无元素时,直接将nums2的剩余元素依次放置在nums1的相应位置上。
相关文章:
LeetCode题(66,69,35,88)--《c++》
66.加一 // // Created by wxj05 on 2024/7/20. // //法一 class Solution { public:vector<int> plusOne(vector<int>& digits) {bool carry true; // 进位标志for (int i digits.size() - 1; i > 0 && carry; --i) {digits[i] 1;carry digit…...
 
来参与“向日葵杯”全国教育仿真技术大赛~
可点击进行了解:“向日葵杯”全国教育仿真技术大赛 (sunmooc.cn) 本次大赛共分为四个赛道:自主命题赛道、教育知识图谱设计赛道、FPGA硬件扑克牌对抗赛道、EasyAR元宇宙空间设计赛道。 参赛对象 : 具有正式学籍的在校研究生,本科…...
 
SQL每日一题:删除重复电子邮箱
题干 表: Person -------------------- | Column Name | Type | -------------------- | id | int | | email | varchar | -------------------- id 是该表的主键列(具有唯一值的列)。 该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。 编写解决方案 删除 所有重复…...
 
3、宠物商店智能合约实战(truffle智能合约项目实战)
3、宠物商店智能合约实战(truffle智能合约项目实战) 1-宠物商店环境搭建、运行2-webjs与宠物逻辑实现3-领养智能合约初始化4-宠物领养实现5-更新宠物领养状态 1-宠物商店环境搭建、运行 https://www.trufflesuite.com/boxes/pet-shop 这个还是不行 或者…...
数据库系列
目录 一、数据库的概念和作用 1.数据库的特点 2.数据模型 二、数据库系统 1.数据库管理系统 2.数据库的基本操作 一、数据库的概念和作用 数据库是指长期存储在计算机内,有组织的、可共享的数据集合。它可视为一个电子化的文件柜,用来存储电子文件…...
极狐GitLab如何启用和配置PlantUML?
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署…...
Shell 构建flutter + Android 生成Apk
具体步骤 #shell 具体实现和说明如下: echo "build_start_apk!" echo "编译此脚本的前提条件如下:" #在Android 项目的主工程下,进入主工程文件夹,创建build-android 文件夹,在其文件夹下有build-android.sh文件,此文件就是整个文章的脚本内容(…...
 
如何用手机压缩视频?手机压缩视频方法来了
高清视频的大文件大小常常成为分享和存储的障碍,尤其是在数据流量有限或存储空间紧张的情况下。幸运的是,无论是智能手机还是个人电脑,都有多种方法可以帮助我们轻松压缩视频文件,以适应不同的需求和情境。本文将介绍如何在手机上…...
Linux下如何安装配置Elastic Stack日志收集系统
安装和配置Elastic Stack日志收集系统,包括Elasticsearch、Logstash和Kibana,是一个相对复杂的过程。本篇文章将逐步引导您完成整个过程。 安装Java Elasticsearch、Logstash和Kibana都需要Java运行环境。首先,您需要在Linux系统上安装Java…...
 
【深入C++】map和set的使用
文章目录 C 中的容器分类1. 顺序容器2. 关联容器3. 无序容器4. 容器适配器5. 字符串容器6. 特殊容器 set1.构造函数2.迭代器3.容量相关的成员函数4.修改器类的成员函数5.容器相关操作的成员函数 multiset1.equal_range map1.初始化相关的函数2.迭代器3.容量相关的成员函数4.访问…...
 
跟代码执行流程,读Megatron源码(二)训练入口pretrain_gpt.py
Megatron-LM默认支持GPT、T5、BERT等多个常见模型的预训练,当下大模型流行,故以pretrain_gpt.py为例做源码的走读。 一. 启动pretrain_gpt.py pretrain_gpt.py为GPT类模型的训练入口,它通过命令行形式被调用,其精确执行路径位于M…...
MATLAB练习题——矩阵(2)
逻辑运算 a [5 0.2 0 -8 -0.7 ],在进行逻辑运算时,a 相当于什么样的逻辑量。 相当于 a[1 1 0 1 1] 角度运算 在 sin(x)运算中,x 是角度还是弧度? 在 sin(x)运算中,x 是弧度,MATLAB 规定所有…...
arm、AArch64、x86、amd64、x86_64 的区别
arm vs AArch64 vs amd64 vs x86_64 vs x86 的区别 当涉及到 CPU 的时候,有许多术语:AArch64、x86_64、amd64、arm 等等。了解它们是什么以及它们之间的区别。 当你查看数据表或软件下载页面时是否被 ARM、AArch64、x86_64、i386 等术语混淆?…...
 
【SpringBoot】 jasypt配置文件密码加解密
目前我们对yml配置文件中的密码都是明文显示,显然这不安全,有的程序员离职了以后可能会做一些非法骚操作,所以我们最好要做一个加密,只能让领导架构师或者技术经理知道这个密码。所以这节课就需要来实现一下。 我们可以使用jasypt…...
 
复杂网络的任意子节点的网络最短距离
复杂网络的任意子节点的网络最短距离 题目要求介绍 本文算法测试用的数据集为空手道俱乐部,其中空手道俱乐部的数据集可通过这个链接进行下载•http://vlado.fmf.uni-lj.si/pub/networks/data/Ucinet/UciData.htm#zachary 摘要 本文旨在解决复杂网络中任意子节点…...
 
(Qt) 文件读写基础
文章目录 🗂️前言📄ref📄访问标记🗃️enum 标记 🗂️Code📄demo📄分点讲解🗃️继承体系🗃️打开/关闭🗃️写🗃️读 🗂️END…...
 
全产业布局对穿戴甲品牌连锁店的意义
对于美甲行业来说,穿戴甲虽然不是什么新生事物,但也就是近两年才流行开来。面对井喷的市场需求,相应的从业者,不管是品牌连锁店,还是做批发、外贸,美甲周边、亦或是OEM的,大家都忙得不亦乐乎&am…...
 
git的一些使用技巧(git fetch 和 git pull的区别,git merge 和 git rebase的区别)
最近闲来无聊,虽然会使用git操作,但是 git fetch 和 git pull 的区别,git merge 和 git rebase的区别只是一知半解,稍微研究一下; git fetch 和 git pull 的区别 git fetch git fetch 是将远程仓库中的改动拉到本地…...
 
展厅中控系统有哪些优势呢
格芬科技的展厅中控系统具有多方面的优势,主要体现在以下几个方面: 一、高度集成与灵活控制 全终端网络可编程:格芬科技的展厅中控系统采用全终端网络可编程技术,能够实现对展厅内各种设备的集中控制和管理,包括电脑…...
 
FPGA开发在verilog中关于阻塞和非阻塞赋值的区别
一、概念 阻塞赋值:阻塞赋值的赋值号用“”表示,对应的是串行执行。 对应的电路结构往往与触发沿没有关系,只与输入电平的变化有关系。阻塞赋值的操作可以认为是只有一个步骤的操作,即计算赋值号右边的语句并更新赋值号左边的语句…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
 
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
 
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
 
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
 
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
 
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
 
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
 
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
