Vector OJ:电话号码组合 数组中超过一半的数字

news2024/11/17 11:56:29

目录

1.电话号码组合

2. JZ39 数组中出现次数超过一半的数字

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


1.电话号码组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例:

输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
输入:digits = ""
输出:[]

思路:

 利用回溯来实现,也就是深度优先搜索(DFS)算法来探索所有可能的组合。

tmp为字符串,用于存储临时组合,还有一个名为nums的数组,用于存储数字与字母的映射关系。

数组ret用于存储我们将生成的最终组合。

Dfs函数是一个递归函数,执行深度优先搜索以生成所有可能的组合。它接受两个参数:当前在数字字符串中的位置posdigits字符串本身。

Dfs函数内部,我们检查是否已经到达了digits字符串的末尾.

如果是,我们将存储在tmp中的当前组合添加到ret向量中,并返回。

然后移除tmp中的最后一个字符,以进行回溯并尝试下一个字母。

否则,我们获取当前位置处数字的数值,并使用for循环遍历与该数字关联的字母。对于每个字母,我们将其添加到tmp字符串中,递归调用Dfs,并继续到下一个位置。

代码实现:

class Solution {
public:
    string tmp;
    vector<string> nums={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    vector<string> ret;

    void Dfs(size_t pos,string digits)
    {
        if(pos==digits.size())
        {
            ret.push_back(tmp);
            return;
        }

        int num=digits[pos]-'0';
        for(int i=0;i<nums[num].size();i++)
        {
            tmp.push_back(nums[num][i]);
            Dfs(pos+1,digits);
            tmp.pop_back();
        }
        return;

    }
    vector<string> letterCombinations(string digits) {
        vector<string> v;
        if(0==digits.size())
        return {};
        Dfs(0,digits);
        return ret;

    }
};

2. JZ39 数组中出现次数超过一半的数字

描述

给一个长度为 n 的数组,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。

输入描述:

保证数组输入非空,且保证有解

思路: 

countret,分别用来记录当前数字的出现次数和出现次数超过一半的数字。

因为ret出现的次数大于其他所有数字出现的次数,所以:

使用一个for循环遍历输入的numbers向量。在循环中,我们首先检查count是否为0,如果是,说明当前ret中记录的数字出现次数已经被抵消完了,因此我们将ret更新为当前遍历到的数字e

然后我们检查当前遍历到的数字e是否与ret相等,如果相等,我们将count递增;如果不相等,我们将count递减。

最终,我们返回ret,即为数组中出现次数超过一半的数字。

代码实现:

class Solution {
public:

    int MoreThanHalfNum_Solution(vector<int>& numbers) {
        // write code here
        int count=0;
        int ret=0;
        for(int e:numbers)
        {
            if(count==0)
            ret=e;
            if(ret==e)
            count++;
            else
             count--;
        }
        return ret;
    }
};

 

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

给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。

考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:

  • 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。
  • 返回 k 。

思路:

while循环来遍历数组。循环条件是it不等于nums的倒数第二个位置,因为在循环体中我们会使用++it

如果it迭代器指向的数据不等于下一个,--it,因为在比较中++了it;

如果相等,将it向前移动一位并调用erase函数来删除当前位置的元素,然后继续下一轮循环。

最终,返回nums的长度,即为删除重复项后的数组长度。

代码实现:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        vector<int>::iterator it=nums.begin();
        while(it!=nums.end()-1)
        {
            if(*it!=*++it)
            {
                --it;
            }
            else
            {
                --it;
                it=nums.erase(it);
                continue;
            }
            it++;
        }
        return nums.size();

    }
};

 

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

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

相关文章

TensorFlow 深度学习 开发环境搭建 全教程

PyTorch 深度学习 开发环境搭建 全教程 TensorFlow 深度学习 开发环境搭建 全教程 1、指定清华源命令 -i https://pypi.tuna.tsinghua.edu.cn/simple2、conda安装 这是AI开发环境的全家桶&#xff0c;官网下载链接Anaconda | Start Coding Immediately 尽量不要选择太新版本…

勤哲 Excel 服务器2017 V13.0.144 最好用稳定版本,带注册,无限用户,含教程【亲测非常好用】

勤哲EXCEL 服务器 V13.0.144 无限用户 无限数据 非常好用 非常稳定。 Excel服务器是一个面向最终用户的信息系统设计工具与运行平台&#xff0c;它的作用是帮助我们“建立适合需要的管理信息系统&#xff0c;实现管理的信息化”。 谈到管理信息系统&#xff0c;人们很容易联想…

Java笔记(死锁、线程通信、单例模式)

一、死锁 1.概述 死锁 : 死锁是指两个或两个以上的进程在执行过程中&#xff0c;由于竞争资源或者由于彼此通信而造成的一种阻塞的现象&#xff0c;若无外力作用&#xff0c;它们都将无法往下执行。此时称系统处于死锁状态或系统产生了死锁&#xff0c;这些永远在互相等待的进…

前端面试题-js-new关键字-this指向-js事件流-防抖节流

前端面试题-js-new关键字-this指向-js事件流-防抖节流 new 关键字都做了什么 this指向问题JS事件流防抖节流函数 new 关键字都做了什么 this指向问题 1.创建一个简单的空对象 2.原型的绑定&#xff0c;确定对象O的原型链 3.绑定this对象为O&#xff0c;传入参数&#xff1b;执…

深入理解旅游网站开发:Java+SpringBoot+Vue+MySQL的实战经验

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

RocketMQ源码阅读-九-自定义过滤规则Flitersrv

RocketMQ源码阅读-九-自定义过滤规则Flitersrv 什么是FiltersrvFiltersrv注册到Broker过滤类Consumer发起订阅设置过滤类代码Consumer上传过滤类代码Flitersrv编译过滤类代码 过滤消息Consumer 从 Filtersrv 拉取消息Flitersrv从Broker拉取消息 Flitersrv的高可用总结 什么是Fi…

电容主要特点和作用,不同类型的电容区别

电容 两个相互靠近的金属板中间夹一层绝缘介质组成的器件&#xff0c;当两端存在电势差时&#xff0c;由于介质阻碍了电荷移动而累积在金属板上&#xff0c;衡量金属板上储存电荷的能力称之为电容&#xff0c;相应的器件称为电容器。 电容&#xff08;Capacitance&#xff09…

PyTorch 中的nn.Conv2d 类

nn.Conv2d 是 PyTorch 中的一个类&#xff0c;代表二维卷积层&#xff08;2D Convolution Layer&#xff09;。这个类广泛用于构建卷积神经网络&#xff08;CNN&#xff09;&#xff0c;特别是在处理图像数据时。 基本概念 卷积: 在神经网络的上下文中&#xff0c;卷积是一种特…

关于mysql默认禁用本地数据加载的情况处理(秒解决)

1.首先报错信息&#xff1a;ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides 2.排查问题&#xff1a; 先检查local_infile的状态&#xff1a;使用sql指令 show global variables like local_infile; 这种情…

Keycloak - docker 运行 前端集成

Keycloak - docker 运行 & 前端集成 这里的记录主要是跟我们的项目相关的一些本地运行/测试&#xff0c;云端用的 keycloak 版本不一样&#xff0c;不过本地我能找到的最简单的配置是这样的 docker 配置 & 运行 keycloak keycloak 有官方(Red Hat Inc.)的镜像&#…

如何在ubuntu22.04安装ROS2

ubuntu22.04安装ROS2 教程 选择对应版本进行安装设置编码添加源安装ROS2设置环境变量 运行ROS2 选择对应版本 通过官方网站&#xff0c;查询Ubuntu与ros对应的版本&#xff0c;版本不一致也会出现安装不成功。 https://wiki.ros.org/ROS/Installation 每一个都可以进行点击&a…

Windows10上使Git Bash支持rsync命令操作步骤

rsync命令是linux上常用的工具之一&#xff0c;用于远程以及本地系统中拷贝/同步文件和文件夹。 Windows Git Bash默认并不支持rsync&#xff0c;如下图所示&#xff1a; 使Git Bash支持rsync命令操作步骤&#xff1a; 1.从https://repo.msys2.org/msys/x86_64/ 下…

flutter-相关个人记录

1、flutter 安卓打包打包报错 flutter build apk -v --no-tree-shake-icons 2、获取华为指纹证书命令 keytool -list -v -keystore ***.jks 3、IOS项目中私有方法查找隐藏文件中 1、cd 项目目录地址 2、grep -r xerbla. "xerbla"为需要查找的关键字 3…

在IDEA中创建SpringBoot项目

概述 SpringBoot是由Pivotal团队提供的全新的框架&#xff0c;其设计的目的是用来简化Spring应用的初始搭建以及开发过程。 传统方式构建Spring应用程序 导入依赖繁琐 依赖冲突 项目配置繁琐 SpringBoot特性 1、起步依赖 本质上就行一个Maven坐标&#xff0c;整合了完成一…

RockChip DRM Display Driver

资料来源: 《Rockchip_DRM_Display_Driver_Development_Guide_V1.0.pdf》 《Rockchip_Developer_Guide_DRM_Display_Driver_CN.pdf》 一:DRM概述 DRM(Direct Rendering Manager)直接渲染管理,buffer分配,帧缓冲。对应userspace库位libdrm,libdrm库提供了一系列友好的…

【NeRF】了解学习Neural Radiance Fields(神经辐射场)

文章目录 1.Definition of field&#xff08;场的定义&#xff09;1.1 shape representations&#xff08;各种形状表征方式&#xff09;1.2 Explicit surfaces and implicit surfaces1.3 Radiance Field(Implicit Surfaces)体素密度 2.Definition of Rendering&#xff08;渲染…

项目解决方案:非执法视频监控系统项目设计方案

目 录 一、概述 &#xff08;一&#xff09;前言 &#xff08;二&#xff09;设计思路 &#xff08;三&#xff09;设计原则 1、实用性 2、可靠性 3、安全性 4、先进性 5、开放性 6、易管理、易维护 &#xff08;四&#xff09;设计依据 二、方案总…

数据可视化的未来:2024 年及以后_光点科技

随着我们进入数据驱动决策的下一个时代&#xff0c;数据可视化领域即将迎来一场变革性革命。随着信息的不断涌入和数据的复杂性不断增加&#xff0c;传统的可视化方法需要帮助跟上步伐。人工智能、机器学习和增强现实等新兴技术正在为新一代实时数据可视化工具铺平道路&#xf…

C语言-算法-线性dp

[USACO1.5] [IOI1994]数字三角形 Number Triangles 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径&#xff0c;使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 在上面的样例中&#xff0c;从 7 → 3 → 8 →…

centos手动下载配置redis并自启动

有些服务器不能自动安装配置redis&#xff0c;仓库找不到之类的问题&#xff0c;就需要手动下载配置redis&#xff0c;记录下&#xff0c;方便以后使用&#xff08;ps&#xff0c;如果报错可能是gcc缺失&#xff09; 1、下载 Redis 源码包&#xff1a;访问 Redis 官网或可信的…