leetcode刷题:vector刷题

news2024/10/7 2:22:08


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

🔥个人主页guoguoqiang. 🔥专栏leetcode刷题

Alt

1.只出现一次的数字

在这里插入图片描述
这道题很简单,我们只需要遍历一次数组即可通过异或运算实现。(一个数与自身异或结果为0,任何数与0异或还是它本身)

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int value=0;
        for(auto e:nums){
            value^=e;
        }
        return value;
    }
};

2.杨辉三角

这里是引用
这个题需要创建一个二维数组,开辟空间
vector<vector> vv , vv.resize(numRows)
在这里插入图片描述

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

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

这里是引用
双指针,如果fast的前一个与fast相同,则对前面的值进行修改。

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int n=nums.size();
        if(n==0){
            return 0;
        }
        int slow=1,fast=1;
        while(fast<n){
            if(nums[fast-1]!=nums[fast]){
                nums[slow]=nums[fast];
                slow++;
            }
            fast++;
        }
        return slow;
    }
};

4.只出现一次的数组 二

在这里插入图片描述

//方法一 : 异或
class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ones = 0, twos = 0;       
        for (int num : nums) {
            ones = (ones ^ num) & ~twos;
            twos = (twos ^ num) & ~ones;
        }
        return ones;
    }
};

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        unordered_map<int,int>freq;
        for(int num:nums){
            ++freq[num];
        }
        int ans=0;
        for(auto [num,occ]:freq){
            if(occ==1){
                ans=num;
                break;
            }
        }
        return ans;
    }
};

5.只出现一次的数字 三

在这里插入图片描述

class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {//哈希表
        vector<int> ans;
        unordered_map<int,int>freq;
        for(int num:nums){
            ++freq[num];
        }
        for(auto [num,occ]:freq){
            if(occ==1){
                ans.push_back(num);
            }
        }
        return ans;
    }
};
class Solution {
public:
    vector<int> singleNumber(vector<int>& nums) {
        // 第一步,对所有元素进行异或,最终的结果就是两个只出现一次数的异或结果
        int diff = 0;
        for (int num : nums) {
            diff ^= num;
        }
        
        // 找到diff中任何为1的位,可以使用diff & -diff快速找到
        // 这个操作可以隔离出diff最右端的1
        unsigned int diff_unsigned = diff;
        diff_unsigned &= -diff_unsigned;

        // 使用找到的这一位将数组中的数字分成两组
        vector<int> results(2, 0); // 最终结果
        for (int num : nums) {
            if ((num & diff_unsigned) == 0) {
                // 第一组,与diff_unsigned对应位为0
                results[0] ^= num;
            } else {
                // 第二组,与diff_unsigned对应位为1
                results[1] ^= num;
            }
        }
        
        return results;
    }
};

6.电话号码的字母组合

在这里插入图片描述

class Solution {//回溯算法。
public:
    vector<string> letterCombinations(string digits) {
        if(digits.empty()) return{};
         vector<string> mappings = {  // 数字到字母的映射
            "", "", "abc", "def",   // '0','1','2',...
            "ghi", "jkl", "mno",
            "pqrs", "tuv", "wxyz"
        };
        vector<string> result;
        string current;
        
        backtrack(result, digits, 0, current, mappings);
        
        return result;
    }
    private:
  void backtrack(vector<string>& result, const string& digits, 
                   int index, string& current, const vector<string>& mappings) {
                        if(index==digits.length()){
                            result.push_back(current);
                            return;
                        }
                           string letters = mappings[digits[index] - '0']; // 获取当前数字对应的所有字母
        for (char letter : letters) { // 遍历这些字母
            current.push_back(letter);   // 添加当前的字母
            backtrack(result, digits, index + 1, current, mappings);  // 继续处理下一个数字
            current.pop_back();  // 回溯,移除当前字母,以便尝试下一个字母
        }
    }
};

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

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

相关文章

Linux 实现自定义系统调用,支持参数和结果返回

本文实现一个简单的系统调用实现&#xff0c;支持输入字符串参数&#xff0c;并返回一个结果字符串。 以下是验证步骤&#xff1a; 1. 添加系统调用编号 试验使用的是 x86_64 架构的 Linux 内核。 找到并编辑 arch/x86/entry/syscalls/syscall_64.tbl 文件&#xff0c;在文件…

农业气象站的工作原理

TH-NQ8农业气象站是一种专门用于监测和记录与农业生产密切相关的气象要素的设施。它通过安装各种气象传感器来收集数据&#xff0c;如温度、湿度、风速、风向、降雨量、太阳辐射等&#xff0c;并将这些数据通过传输系统发送到数据中心或用户端&#xff0c;以供农业生产者、研究…

数据库。

数据库安全性 论述题5’ 编程题10’ sql语言实现权限控制 一、概述 1、不安全因素 &#xff08;1&#xff09;⾮授权对数据库的恶意存取和破坏 &#xff08;2&#xff09;数据库中重要的数据泄露 &#xff08;3&#xff09;安全环境的脆弱性 2、⾃主存取控制⽅法 gr…

Java学习 (七) 面向对象--多态、object类

一、多态性 多态在java中的体现是 父类的引用指向子类的对象 格式&#xff1a; 父类类型 变量名 子类对象 1、代码案例 vi Person.java public class Person {public String name;public int age;//新增方法public void eat(){System.out.println("人吃饭");}…

掌握这些快捷键,提升你的编程效率!

文章目录 执行代码行操作移动光标查看源码编辑常用操作类操作方法操作文件操作快捷键组合结语 &#x1f389;欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文…

Chapter9 更复杂的光照——Shader入门精要学习笔记

Chapter9 更复杂的光照 一、Unity的渲染路径1.渲染路径的概念2.渲染路径的类型①前向渲染路径a. 前向渲染路径的原理b. Unity中的前向渲染c. 两种Pass ②延迟渲染路径a. 延迟渲染路径的原理b. Unity中的延迟渲染c. 两种Pass ③顶点照明渲染路径 二、Unity的光源类型1.光源类型①…

【简单讲解神经网络训练中batch的作用】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

IP地址与电商企业

网购作为我们现代生活不可或缺的部分&#xff0c;现如今电商企业蓬勃发展。 IP地址是网络世界中每一台设备的独特标识符&#xff0c;就像现实世界中每家每户的门牌号。对于电商企业而言&#xff0c;它在很多方面方面发挥着作用。 IP地址能够帮助电商企业精准地确定用户所在的地…

2024广州智能音箱展|广州蓝牙耳机展

2024广州智能音箱展|广州蓝牙耳机展 时间&#xff1a;2024年11月29日-12月1日 地点&#xff1a;广州琶洲保利世贸博览馆 【展会简介】 中国是全球最大的音频产品制造基地和消费市场&#xff0c;随着国内外互联网巨头纷纷瞄准音频行业并投入巨资布局AI产品矩阵&#xff0c;音…

思考如何学习一门编程语言?

一、什么是编程语言 编程语言是一种用于编写计算机程序的人工语言。通过编程语言&#xff0c;程序员可以向计算机发出指令&#xff0c;控制计算机执行各种任务和操作。编程语言由一组语法规则和语义规则组成&#xff0c;这些规则定义了如何编写代码以及代码的含义。 编程语言…

C++ ariac2 Windows库编译

cd "F:\\aria2" gmp-6.1.2.tar.lz expat-2.2.0.tar.bz2 sqlite-autoconf-3160200.tar.gz zlib-1.2.11.tar.gz c-ares-1.12.0.tar.gz libssh2-1.8.0.tar.gz --enable-libaria2 --enable-static libgnutls-dev&#xff08;对于HTTPS&#xff0c;BitTorrent&#xff0…

探囊取物之多形式注册页面(基于BootStrap4)

基于BootStrap4的注册页面&#xff0c;支持手机验证码注册、账号密码注册 低配置云服务器&#xff0c;首次加载速度较慢&#xff0c;请耐心等候&#xff1b;演练页面可点击查看源码 预览页面&#xff1a;http://www.daelui.com/#/tigerlair/saas/preview/ly4gax38ub9j 演练页…

墨烯的Java技术栈-数据结构与算法基础-010

(前言 这是在之前容器很多的不知名的名词 想着与其一个个解释不如直接重温一遍数据结构) 一.概念 程序 数据结构 算法 程序的本质 数据结构经常可以说为计算机内功(心法) 而编程能力就是招式(法术) 考研 必考专业课 一共四门专业课 共150分 找工作更不用说:面试主要考…

AcWing 1256:扩展二叉树

【题目来源】https://www.acwing.com/problem/content/1258/【题目描述】 由于先序、中序和后序序列中的任一个都不能唯一确定一棵二叉树&#xff0c;所以对二叉树做如下处理&#xff0c;将二叉树的空结点用 补齐&#xff0c;如图所示。 我们把这样处理后的二叉树称为原二叉树…

Linux系统之 — 线程

Linux系统之 — 线程 线程介绍线程使用死锁&#xff08;Deadlock&#xff09;竞态条件&#xff08;Race Condition&#xff09; 线程使用示例服务器端代码示例服务器端示例拆解1. 引入头文件和宏定义2. 定义全局变量3. 定义线程函数4. 主函数5. 错误处理和资源释放 客户端代码示…

谷歌重磅:告别RAG,长上下文的大语言模型无需检索增强

当今人工智能领域正在经历一场静默的革命。随着大语言模型(LLM)的快速发展&#xff0c;它们不仅能够处理更长的上下文&#xff0c;还展现出惊人的推理和检索能力。 难道我们要告别基于LLM的检索增强生成(RAG)了吗&#xff1f; 结果还真是这样&#xff0c;最近谷歌发布专门用于…

k8s公网集群安装(1.23.0)

网上搜到的公网搭建k8s都不太一致, 要么说的太复杂, 要么镜像无法下载, 所以写了一个简洁版,小白也能一次搭建成功 使用的都是centos7,k8s版本为1.23.0 使用二台机器搭建的, 三台也是一样的思路1.所有节点分别设置对应主机名 hostnamectl set-hostname master hostnamectl set…

一文搞懂 java 线程池:ThreadPoolExecutor 和 FixedThreadPool 原理

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

数据结构-排序算法篇

前言 在我们的生活中有很多东西都是有大小的&#xff0c;那么该如何去排序&#xff1f;假设有10个数字要你去排序&#xff0c;眼睛一扫就看出来了&#xff0c;那100、1000、10000要怎么去排&#xff1f;下面就为大家介绍各种排序的算法。 内容 1.冒泡排序 2.选择排序 3.插入…

某Dota/IM对战平台玩家助手、查看战绩下、胜率等

功能说明 WAR3游戏启动后&#xff0c;可以自动获取游戏双方的玩家列表&#xff0c;然后查询显示玩家的战绩及个人信息。附带查看玩家的战绩详情、最近游戏&#xff0c;查看对手及友方的战绩详情&#xff0c;据此推算出是否开黑、是否小号等信息 使用方法及运行效果 启动 查…