C++初阶:vector相关练习

目录

  • 1. 只出现一次的数
  • 2. 杨辉三角
  • 3. 删除有序数组中的重复项
  • 4. 只出现一次的数II
  • 5. 只出现一次的数III
  • 6. 数组中出现次数超过一半的数
  • 7. 电话号码的字母组合(多叉树遍历)

1. 只出现一次的数

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    只出现一次的数
  3. 思路:位运算规律,a ^ a = 0,0 ^ a = a
class Solution 
{
public:int singleNumber(vector<int>& nums) {int num = 0;for(auto e : nums){num ^= e;}return num;}
};

2. 杨辉三角

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    杨辉三角
  3. 思路:将vector初始化为0,然后再将首尾处理为1,当num[i][j]为0时,nums[i][j] = nums[i - 1][j] + nums[i - 1][j - 1]
class Solution 
{
public:vector<vector<int>> generate(int numRows){vector<vector<int>> vv;vector<int> v1(1, 1);vv.push_back(v1);if (numRows == 1){return vv;}v1.push_back(1);vv.push_back(v1);if (numRows == 2){return vv;}vector<int> v2(v1);for (int i = 1; i < numRows - 1; i++){v2.push_back(1);for (int j = 1; j < v2.size() - 1; j++){v2[j] = vv[i][j - 1] + vv[i][j];}vv.push_back(v2);v1 = v2;}return vv;}
};

优化:

class Solution 
{
public:vector<vector<int>> generate(int numRows) {vector<vector<int>> ret;for(int i = 0; i < numRows; i++){ret.push_back(vector<int>(i + 1));ret[i].front() = ret[i].back() = 1;}for(int i = 0; i < numRows; i++){for(int j = 0; j < ret[i].size(); j++){if(ret[i][j] == 0){ret[i][j] = ret[i - 1][j] + ret[i - 1][j - 1];}}}return ret;}
};

3. 删除有序数组中的重复项

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    删除有序数组中的重复项
  3. 思路:
    <1> 挪移覆盖法O(n^2)
    <2> 双指针法(快排),前提条件:有序

在这里插入图片描述

class Solution 
{
public:int removeDuplicates(vector<int>& nums) {//双指针法int cur = 1;int pre = 0;while(cur < nums.size()){if(nums[pre] != nums[cur]){pre++;nums[pre] = nums[cur];}cur++;}return pre + 1;}
};

4. 只出现一次的数II

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    只出现一次的数II
  3. 思路:遍历计数法
class Solution 
{
public:int singleNumber(vector<int>& nums) {sort(nums.begin(), nums.end());int count = 1;int i = 0;for(i = 0; i + 1 < nums.size(); i++){if(nums[i] == nums[i + 1]){count++;}else{if(count != 3){break;}count = 1;}}return nums[i];}
};

5. 只出现一次的数III

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    只出现一次的数III
  3. 思路:排序 + 遍历计数
class Solution 
{
public:vector<int> singleNumber(vector<int>& nums) {vector<int> v;sort(nums.begin(), nums.end());int count = 1;for(int i = 1; i < nums.size(); i++){if(nums[i - 1] == nums[i]){count++;}else{if(count == 1){v.push_back(nums[i - 1]);}if(i == nums.size() - 1 && nums[i - 1] != nums[i]){v.push_back(nums[i]);}count = 1;}}return v;}
};

6. 数组中出现次数超过一半的数

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    数组中出现次数超过一半的数
  3. 思路:排序 + 计数遍历
class Solution 
{
public:int MoreThanHalfNum_Solution(vector<int>& numbers) {sort(numbers.begin(), numbers.end());int num = numbers[0];int count = 1;for(int i = 0; i + 1 < numbers.size(); i++){if(count > numbers.size() / 2){break;}if(numbers[i] != numbers[i + 1]){num = numbers[i + 1];count = 1;}else {count++;}}return num;}
};

7. 电话号码的字母组合(多叉树遍历)

  1. 题目信息:
    在这里插入图片描述
  2. 题目链接:
    电话号码的字母组合
  3. 思路:多叉树遍历,递归:递归子函数的参数(递归需要的参数),递归的结束条件
class Solution
{
public:string data[10] = { "","","abc", "def","ghi","jkl","mno","pqrs","tuv","wxyz" };//先层数+1,再插入//count第几层void combine(vector<string>& ret, string& digits, int count, const string& ans){//返回条件控制,什么时候返回if (count == digits.size()){ret.push_back(ans);return;}//多叉树遍历操作//pos第几个for (int pos = 0; pos < data[digits[count] - '0'].size(); pos++){//字符串拼接,不更改原本的值,多次使用combine(ret, digits, count + 1, ans + data[digits[count] - '0'][pos]);}}vector<string> letterCombinations(string digits){vector<string> ret;//特殊处理if (digits.size() == 0){return ret;}//层数,当层的哪个字符//第几个答案,组成结果多次使用不可更改原值string ans;int count = 0;combine(ret, digits, count, ans);return ret;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760746.shtml

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

相关文章

集合系列(六) -IdentityHashMap详解

一、摘要 在集合系列的第一章&#xff0c;咱们了解到&#xff0c;Map 的实现类有 HashMap、LinkedHashMap、TreeMap、IdentityHashMap、WeakHashMap、Hashtable、Properties等等。 应该有很多人不知道 IdentityHashMap 的存在&#xff0c;其中不乏工作很多年的 Java 开发者&am…

网文遇冷、短剧续命,阅文去年营收下滑8%

阅文能否靠短剧“续命”&#xff1f; 3月18日&#xff0c;阅文集团(下称“阅文”,00772.HK)公布了2023年财报&#xff0c;尽管去年净利润增加三成以上&#xff0c;但其营收持续下滑。 「不二研究」据其最新年报发现&#xff1a;2023年&#xff0c;阅文营收同比下滑8.0%。目前…

数组实现对数组中对象中的指定项的查找并输出该条记录

文章目录 需求分析 需求 已知返回的数据如下&#xff1a;&#xff0c;现需找到指定字段的那一项并输出 分析 写一个方法就能搞定&#xff0c;代码中定义了一个名为 findDeviceByName 的函数&#xff0c;它会遍历给定的数组&#xff0c;查找其中 deviceName 字段值等于目标…

C语言数据在内存中的存续:一篇文章让你秒懂基础!

JAMES别扣了-CSDN博客 &#x1f495;在校大学生一枚。对IT有着极其浓厚的兴趣 ✨系列专栏目前为C语言初阶、后续会更新c语言的学习方法以及c题目分享. &#x1f60d;希望我的文章对大家有着不一样的帮助&#xff0c;欢迎大家关注我&#xff0c;我也会回关&#xff0c;大家一起交…

关于javascript数字精度丢失的解决办法

分析原因 众所周知&#xff0c;在JavaScript中计算两个十进制数的和&#xff0c;有时候会出现令人惊讶的结果&#xff0c;主要原因是计算机将数据存储为二进制所引起的&#xff0c;所以这并不是javascript存在的缺陷&#xff0c;而在其他语言中也有类似的问题。 例如下面的例子…

aac可以直接改成mp3吗?快速转换的3个方法~

AAC&#xff08;Advanced Audio Coding&#xff09;文件格式的诞生源于对音频压缩技术的不断追求。由Fraunhofer IIS、杜比实验室、AT&T、索尼等联合开发&#xff0c;旨在提供更高质量的音频压缩效果。AAC文件格式因其出色的音质和高效的压缩算法&#xff0c;成为数字音频领…

使用SourceTree获取git代码

1、在浏览器打开git的地址&#xff0c;并且使用用户名和密码登录&#xff1b; 2、输入你的git账号密码&#xff1b; 3、打开SourceTree&#xff0c;地址是自动带过来的&#xff0c;点击第二个“浏览”选择你在D盘或其它盘自己创建的文件夹&#xff1b; 4、正在拉代码&#…

智慧商显安卓主板MT8788_联发科MTK平台多媒体广告一体机方案

MT8788高性能智能主板&#xff0c;支持Android 9.0操作系统&#xff0c;支持双屏异显功能;MT8788是基于12nm工艺制程四核A73四核A53架构的八核心CPU,主频高达2.0GHz,拥有超强的通用计算性能。 MT8788主板采用10层二阶超高密度PCB板,集成了4G、百兆以太网、2.4G/5G 双频WiFi、蓝…

javaSwing扫雷

一、介绍 1.1 背景 在1964年 有一个叫“方 块”的游戏&#xff0c;这是扫雷最原始的版本。后来&#xff0c;这个游戏被改成了另一种游戏&#xff0c;叫做“Rlogic”。在这个游戏中&#xff0c;玩家扮演了一名军队的军人&#xff0c;接受了一项艰难的任务&#xff1a;为指挥中…

记录一次服务器内存使用率过高达到90%告警问题排查。

目录 一、前言二、问题排查处理三、 结尾 &#x1f469;&#x1f3fd;‍&#x1f4bb;个人主页&#xff1a;阿木木AEcru &#x1f525; 系列专栏&#xff1a;Docker容器化部署系列 &#x1f4b9;每一次技术突破&#xff0c;都是对自我能力的挑战和超越。 一、前言 一大早就有一…

“我的海外代购,卖起了香灰手串”

【潮汐商业评论/文】 “这个琉璃手串&#xff0c;去年在雍和宫请的&#xff0c;招财的&#xff1b;这个朱砂挂件&#xff0c;当时直播说可以补八字缺火&#xff0c;果断下单的&#xff1b;这个博主讲星座很准&#xff1b;这篇帖子八字说得很详细&#xff1b;我前两天买了‘财神…

如何设置IDEA远程连接服务器开发环境并结合cpolar实现ssh远程开发

文章目录 1. 检查Linux SSH服务2. 本地连接测试3. Linux 安装Cpolar4. 创建远程连接公网地址5. 公网远程连接测试6. 固定连接公网地址7. 固定地址连接测试 本文主要介绍如何在IDEA中设置远程连接服务器开发环境&#xff0c;并结合Cpolar内网穿透工具实现无公网远程连接&#xf…

linux下用docker安装mysql及导入文件

目录 1. 非root用户设置docker权限2. user账号安装mysql2. root账号打开防火墙3. 启动mysql容器3.1 在指定工作目录下建立文件夹3.2 配置文件3.3 开启mysql容器 4. 进入容器4.1 通过容器进入mysql4.1 设置账号4.2 建立数据库4.3 导入文件 5. windows连接数据库参考文件 1. 非ro…

【说好的情怀呢】

友情提示&#xff1a; 抄本篇文章答案之前&#xff0c;请务必提前下载好 反诈APP。 多年情怀粉&#xff0c;今日粉转黑.... 问题&#xff1a; Q1: 将附件中 ip_china.csv.zip文件加载为 Hive 内部表&#xff0c;保持格式与 csv header一致&#xff0c;表需要开启压缩 Q2: 将…

k8s系列之十四安装Istio

Istio 是一个开源的服务网格&#xff08;Service Mesh&#xff09;&#xff0c;用于连接、管理和保护微服务。它提供了一组功能强大的工具&#xff0c;包括流量管理、安全性、监控和跟踪等&#xff0c;以帮助在微服务架构中更好地管理服务之间的通信。 一些主要的 Istio 功能包…

ubuntu内存不足,用Swap扩展增加虚拟内存

Linux增大Swap分区&#xff0c;可以增加虚拟内存&#xff0c;以解决电脑卡机&#xff0c;内存不足等问题 top可以查看cpu的使用情况 lscpu可以查看本机配置的cpu硬件情况 查看内存使用情况 free -h (下面显示"交换"或者Swap等字样说明系统已经启动了Swap&#xff…

GUROBI案例实战(六)——排产排程问题(2)

更多可参考&#xff1a;https://github.com/Gurobi/modeling-examples/blob/master/food_manufacturing/food_manufacture_1.ipynb 一、问题简介 (1) 某厂商生产一种香皂的原材料有植物油脂和非植物油脂&#xff0c;其中植物油脂有两种&#xff0c;非植物油脂有三种&#xff…

【Java - 框架 - SpringMVC】(01) SpringMVC框架的简单创建与使用,快速上手

"SpringMVC"框架的简单创建与使用&#xff0c;快速上手&#xff1b; 环境 Java版本"1.8.0_202"&#xff1b;Spring Boot版本"2.5.9"&#xff1b;Windows 11 专业版_22621.2428&#xff1b;IntelliJ IDEA 2021.1.3(Ultimate Edition)&#xff1…

Protobuf 的介绍与使用(入门级)

背景 在移动互联网时代&#xff0c;手机流量、电量是最为有限的资源&#xff0c;而移动端的即时通讯应用无疑必须得直面这两点。 解决流量过大的基本方法就是使用高度压缩的通信协议&#xff0c;而数据压缩后流量减小带来的自然结果也就是省电&#xff1a;因为大数据量的传输必…

提升效率!商务电子邮件在WorkPlace中如何高效运用?安全保障!

高效和安全的沟通是任何组织成功的核心。在我们关于电子邮件类型的系列文章的第二期中&#xff0c;我们将重点关注商业电子邮件在促进无缝交互中的关键作用。当你身处重要的工作场环境时&#xff0c;本系列的每篇文章都提供了电子邮件的不同维度的视角。 “2024年&#xff0c;全…