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

C++刷题(四):vector

📝前言说明:
本专栏主要记录本人的基础算法学习以及刷题记录,使用语言为C++。
每道题我会给出LeetCode上的题号(如果有题号),题目,以及最后通过的代码。没有题号的题目大多来自牛客网。对于题目的讲解,主要是个人见解,如有不正确,欢迎指正,一起进步!

🎬个人简介:努力学习ing
📋本专栏:C++刷题专栏
📋其他专栏:C++学习笔记,C语言入门基础,python入门基础,python刷题专栏
🎀CSDN主页 愚润泽


题目

  • 118. 杨辉三角
  • 260. 只出现一次的数 |||
  • 137. 只出现一次的数 ||
  • 26. 删除重复项
  • 超过一半的数字

118. 杨辉三角

在这里插入图片描述

class Solution {
public:vector<vector<int>> generate(int numRows) {vector<vector<int>> c(numRows); // 创建numRows行for(int i = 0; i < numRows; i++){c[i].resize(i + 1, 1); // 将每一行初始化for(int j = 1; j < i; j++){c[i][j] = c[i - 1][j] + c[i - 1][j - 1];}}return c;}
};

260. 只出现一次的数 |||

在这里插入图片描述
解题思路:
在这里插入图片描述
回忆一下异或:

  • 一个数异或0得到它本身
  • (不溢出的前提下)一个数异或它的相反数可以得到最低位的1(且唯一),因为负数的补码是:从右边数,找到第一个1以后,左边的数全部按位取反
class Solution {
public:vector<int> singleNumber(vector<int> &nums) {unsigned int x_all = 0; // 这个必须是无符号的// 如果是有符号的,如:-128 的相反数 128 表示不了,会溢出,导致出错for(auto x: nums){x_all ^= x;}int lowbit = x_all & (- x_all);vector<int> ans(2);for(auto x: nums){// 由 x & lowbit 来分组ans[(x & lowbit) != 0] ^= x;}return ans;}
};

137. 只出现一次的数 ||

在这里插入图片描述
在这里插入图片描述
注意:

  • int是32为比特位的,4个字节,每个字节8个比特位
  • num >> 1就是将num的二进制右移1为,不会改变num的值
  • 二进制数&1可以得到最低位的数
  • 将一个只有第i位为1的二进制数a与另一个二进制数b按位或,可以将b的第i改成1
class Solution {
public:int singleNumber(vector<int>& nums) {int ans = 0;for(int i = 0; i < 32; i++){int cnt = 0;for(auto num: nums){cnt += (num >> i) & 1; // 对所有数字的当前位进行求和 (从低位到高位)}ans |= ((cnt % 3) << i); // 将本位的结果复制到ans上,即按位或 | }return ans;}
};

26. 删除重复项

在这里插入图片描述
没什么好说的,注意原地修改。

class Solution {
public:int removeDuplicates(vector<int>& nums) {int k = 1;for(int i = 1; i < nums.size(); i++){if(nums[i] != nums[i-1]){nums[k] = nums[i];k++;}}return k;}
};

超过一半的数字

在这里插入图片描述
候选法:
加入数组中存在众数,那么众数一定大于数组的长度的一半。
思想就是:如果两个数不相等,就消去这两个数,最坏情况下,每次消去一个众数和一个非众数,那么如果存在众数,最后留下的数肯定是众数。

具体做法:

  1. 初始化:候选人cond = -1, 候选人的投票次数cnt = 0 遍历数组,如果cnt=0
  2. 表示没有候选人,则选取当前数为候选人,++cnt
  3. 否则,如果cnt > 0,表示有候选人,如果当前数=cond,则++cnt,否则--cnt
  4. 直到数组遍历完毕,最后检查cond是否为众数
class Solution {
public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param numbers int整型vector * @return int整型*/int MoreThanHalfNum_Solution(vector<int>& numbers) {int cond = -1;int cnt = 0;for(int i = 0; i < numbers.size(); i ++){if(cnt == 0){cond = numbers[i];cnt++;}else{if(cond == numbers[i])cnt++;elsecnt--;}}return cond;}
};

因为这题保证数组非空且有解,不然还要再遍历一次,判断cond是否个数>size()/2


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

相关文章:

C++刷题(四):vector

&#x1f4dd;前言说明&#xff1a; 本专栏主要记录本人的基础算法学习以及刷题记录&#xff0c;使用语言为C。 每道题我会给出LeetCode上的题号&#xff08;如果有题号&#xff09;&#xff0c;题目&#xff0c;以及最后通过的代码。没有题号的题目大多来自牛客网。对于题目的…...

学习记录706@微信小程序+springboot项目 真机测试 WebSocket错误: {errMsg: Invalid HTTP status.}连接不上

我微信小程序springboot项目 真机测试 websocket 总是报错 WebSocket错误: {errMsg: Invalid HTTP status.}&#xff0c;总是连接不上&#xff0c;但是开发者工具测试就没有问题。 最后解决方案是编码token&#xff0c;之前是没有编码直接拼接的&#xff0c;原因不详。 consol…...

【虚拟仪器技术】Labview虚拟仪器技术应用教程习题参考答案[13页]

目录 第1章 第2章 第3章 第4章 第&#xff15;章 第&#xff16;章 第&#xff17;章 第8章 第1章 1. 简述虚拟仪器概念。 参考答案&#xff1a;虚拟仪器是借助于强大的计算机软件和硬件环境的支持&#xff0c;建立虚拟的测试仪器面板&#xff0c;完成仪器的控制、数…...

【工作梳理】怎么把f12里面的东西导入到postman

postman左上角导入 结果&#xff1a;...

UE5学习笔记 FPS游戏制作34 触发器切换关卡

文章目录 搭建关卡制作触发器传送门显示加载界面 搭建关卡 首先搭建两个关卡&#xff0c;每个关卡里至少要有一个角色 制作触发器传送门 1 新建一个蓝图&#xff0c;父类为actor&#xff0c;命名为portal&#xff08;传送门&#xff09; 2 为portal添加一个staticMesh&#…...

智谱大模型(ChatGLM3)PyCharm的调试指南

前言 最近在看一本《ChatGLM3大模型本地化部署、应用开发和微调》&#xff0c;本文就是讨论ChatGLM3在本地的初步布设。&#xff08;模型文件来自魔塔社区&#xff09; 1、建立Pycharm工程 采用的Python版本为3.11 2、安装对应的包 2.1、安装modelscope包 pip install model…...

新专栏预告 《AI大模型应知应会短平快系列100篇》 - 整体规划设计

做个预告&#xff0c;为系统化梳理AI大模型的发展脉络&#xff0c;并为普及AI素养做一点贡献&#xff0c;特给自己制定了一个小目标&#xff0c;3个月内完成交稿。 AI大模型应知应会短平快系列100篇 - 整体规划设计 一、基础知识模块&#xff08;20篇&#xff09; 1.1 大模型…...

SwanLab Slack通知插件:让AI训练状态同步更及时

在AI模型训练的过程中&#xff0c;开发者常常面临一个难题&#xff1a;如何及时跟踪训练状态&#xff1f;无论是实验超参数的调整、关键指标的变化&#xff0c;还是意外中断的告警&#xff0c;传统的监控方式往往依赖手动刷新日志或反复检查终端&#xff0c;这不仅效率低下&…...

收集 的 JavaScript 数组方法表格

这个表格可以作为数组方法的快速参考指南 方法名对应版本功能原数组是否改变返回值类型concat()ES5-合并数组&#xff0c;并返回合并之后的新数组nArrayjoin()ES5-使用分隔符&#xff0c;将数组转为字符串并返回nStringpop()ES5-删除最后一位&#xff0c;并返回删除的数据yAny…...

操作系统高频(六)linux内核

操作系统高频&#xff08;六&#xff09;linux内核 1.内核态&#xff0c;用户态的区别⭐⭐⭐ 内核态和用户态的区别主要在于权限和安全性。 权限&#xff1a;内核态拥有最高的权限&#xff0c;可以访问和执行所有的系统指令和资源&#xff0c;而用户态的权限相对较低&#x…...

位置编码汇总 # 持续更新

看了那么多还没有讲特别好的&#xff0c;GPT老师讲的不错关于三角函数编码。 一、 手撕transformer常用三角位置编码 GPT说&#xff1a;“低维度的编码&#xff08;例如&#xff0c;第一个维度&#xff09;可以捕捉到大的位置差异&#xff0c;而高维度的编码则可以捕捉到小的细…...

电阻(Resistor)详解

一、电阻的定义与核心作用 电阻是电子电路中用于 限制电流、分压、调节信号电平、消耗功率 的基础被动元件&#xff0c;其阻值&#xff08;Resistance&#xff09;单位为欧姆&#xff08;Ω&#xff09;。其核心作用可归纳为&#xff1a; 限流保护&#xff1a;防止元器件过电流…...

DaVinci Resolve19.1下载:达芬奇调色中文版+安装步骤

如大家所了解的&#xff0c;DaVinci Resolve中文名为达芬奇&#xff0c;是一款专业视频编辑与调色软件。它最初以调色功能闻名&#xff0c;但经过多年发展&#xff0c;已扩展为一套完整的后期制作解决方案&#xff0c;涵盖了剪辑、视觉特效、动态图形和音频后期制作等多个模块。…...

文件IO 2

补充一些用到前面没提到的方法 isDirectory()方法&#xff0c;检查一个对象是否是文件夹&#xff0c;是true不是false isFile()方法&#xff0c;检测一个对象是否为文件,是true不是false 文件的读写操作实践 上一篇大致讲了文件读写操作的基本操作&#xff0c;下面是实践时…...

【Word】批注一键导出:VBA 宏

&#x1f4cc; VBA 宏代码实现 下面是完整的 VBA 代码&#xff0c;支持&#xff1a; 自动创建新文档&#xff0c;并将当前 Word 文档的所有批注导出。批注格式清晰&#xff0c;包括编号、作者、日期和批注内容。智能检测&#xff0c;如果当前文档没有批注&#xff0c;则提示用…...

《深度洞察:MySQL与Oracle中游标的性能分野》

在数据库管理的复杂领域中&#xff0c;游标作为一种强大的工具&#xff0c;用于对数据进行逐行处理&#xff0c;为许多复杂的数据操作提供了解决方案。然而&#xff0c;当涉及到MySQL和Oracle这两大主流数据库时&#xff0c;游标在性能表现上存在着显著的差异。深入理解这些差异…...

LINUX 1

快照 克隆&#xff1a;关机状态下&#xff1a;长时间备份 uname 操作系统 -a 获取所有信息 绝对路径 相对路径 -a -l 列表形式查看 -h 查看版本 相对路径这个还没太搞懂 LS -L LL 简写 显示当前路径 pwd cd 切换到目录 clear 清屏 reboot 重启操作系统...

高效定位 Go 应用问题:Go 可观测性功能深度解析

作者&#xff1a;古琦 背景 自 2024 年 6 月 26 日&#xff0c;阿里云 ARMS 团队正式推出面向 Go 应用的可观测性监控功能以来&#xff0c;我们与程序语言及编译器团队携手并进&#xff0c;持续深耕技术优化与功能拓展。这一创新性的解决方案旨在为开发者提供更为全面、深入且…...

【Windows】win10系统安装.NET Framework 3.5(包括.NET 2.0和3.0)失败 错误代码:0×80240438

一、.NET3.5(包括.NET 2.0和3.0)安装方式 1.1 联网安装(需要联网,能访问微软,简单,很可能会失败) 1.2 离线安装-救急用(需要操作系统iso镜像文件,复杂,成功几率大) 二、联网安装 通过【控制面板】→【程序】→【程序和功能】→【启用或关闭Windows功能】 下载过程…...

蓝桥杯训练士兵

思路&#xff1a;其实每次就是要比较士兵单独训练的价格之和SUM与S的大小&#xff0c;如果 SUM大&#xff0c;那么就减去所有士兵都要训练的次数的最小值&#xff0c;SUM再更新一下&#xff0c;继续比较。 先对士兵的次数按从小到大的次序排序&#xff08;很重要&#xff09;&…...

Java基础-27-多态-多态好处和存在的问题

在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;多态是一个非常重要的概念。它能够让我们用统一的方式处理不同类型的对象&#xff0c;提升代码的灵活性和可扩展性。Java 作为一种面向对象的编程语言&#xff0c;充分支持多态&#xff0c;并在实际开发中提供了巨大的…...

循环神经网络 - 简单循环网络

本文我们来学习和了解简单循环网络(Simple Recurrent Network&#xff0c;SRN)&#xff0c; SRN是一个非常简单的循环神经网络&#xff0c;只有一个隐藏层的神经网络。 简单循环神经网络&#xff0c;也常称为 Elman 网络&#xff0c;是最基本的循环神经网络&#xff08;RNN&am…...

Linux 企业项目服务器组建(附脚本)

一、架构概述​ 本方案旨在为企业搭建一套高效、安全的 Linux 服务器架构&#xff0c;包含一台 DNS 服务器&#xff0c;以及一台同时承载 FTP 和 Samba 服务的服务器&#xff0c;满足公司在域名解析、图片存储与共享、文件共享等方面的业务需求。​ 二、服务器部署​ DNS 服…...

Linux 2021韩顺平网课笔记:shell编程

基本介绍 Shell是一个命令行解释器&#xff0c;它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序&#xff0c;用户可以用Shell来启动、挂起、停止甚至是编写一些程序。 Shell脚本的执行方式 格式要求 脚本以 #!bin/bash 开头&#xff0c;表明以bashell…...

软考 中级软件设计师 考点知识点笔记总结 day09 操作系统进程管理

文章目录 4、操作系统基本原理4.1 、进程管理**4.1.1 、进程同步机制****4.1.2 、进程互斥机制****4.1.3 、信号量机制****4.1.4 、PV操作实现前驱操作****4.1.5 、死锁**4.1.6 、银行家算法 4、操作系统基本原理 进程管理 存储管理 文件管理 设备管理 微内核操作系统 操作系…...

大模型和AIGC同质化浪潮下的信息困局与破局之道,面向未来的认知革命

欢迎来到涛涛聊AI。看到网上太多雷同的内容有感后&#xff0c;让AI批判下AI。 一、技术趋同引发的信息生态危机 当前互联网正被海量AI生成内容淹没&#xff0c;这种现象的根源在于技术底层的高度同质化。全球主流大模型90%以上基于相同算法架构开发&#xff0c;采用近似的训练…...

⼆、Kafka客户端消息流转流程

这⼀章节将重点介绍Kafka的HighLevel API使⽤&#xff0c;并通过这些API&#xff0c;构建起Kafka整个消息发送以及消费的主线流程。 Kafka提供了两套客户端API&#xff0c;HighLevel API和LowLevel API。 HighLevel API封装了kafka的运⾏细节&#xff0c;使⽤起来⽐较简单&…...

es 3期 第28节-深入掌握集群组建与集群设置

#### 1.Elasticsearch是数据库&#xff0c;不是普通的Java应用程序&#xff0c;传统数据库需要的硬件资源同样需要&#xff0c;提升性能最有效的就是升级硬件。 #### 2.Elasticsearch是文档型数据库&#xff0c;不是关系型数据库&#xff0c;不具备严格的ACID事务特性&#xff…...

如何在 SwiftUI 视图中使用分页(Paging)机制显示 SwiftData 数据(三)

概述 小伙伴们都知道,自从有了 SwiftData 的加持,现在 SwiftUI 可以非常惬意的利用描述型命令创建以数据驱动为本的视图了。这在测试或演示小项目中工作的完美无缺,不过真实世界要“残酷”的多。 实际情况是,我们无法一次性将海量数据统统拉入内存以便在 SwiftUI 中显示,…...

git和VScode

游戏存档保存的是游戏的进度 git保存的是代码的进度 Vscode和git 要正常的使用git首先要设置姓名和邮箱 要配合gitee&#xff08;也可以是其他平台&#xff0c;以gitee举例&#xff09;使用&#xff0c;首先创造一个gitee账号&#xff0c;复制邮箱和用户名 在VScode中找到…...