力扣-数组题

news2025/10/19 8:21:24

1. 两数之和

找出map中是否有target-nums[i],

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int> hash;
        for(int i = 0 ;i < nums.size(); i++)
        {
            if(hash.find(target - nums[i]) != hash.end())
            {
                return {i, hash[target - nums[i]]};
            }
            else{
                hash[nums[i]] = i;
            }
            
        }

    }
};

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

使用双指针 

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int left = 0;
        int right = 1;
        while(right < nums.size())
        {
            if(nums[left] == nums[right])
            {
                right++;//数字相同时,right右移
            }
            else
            {
                nums[++left] = nums[right++];//不同时
            }
        }
        return left + 1;
    }
};

27. 移除元素

双指针

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int lowIndex =0;
        for(int fastIndex = 0; fastIndex < nums.size();fastIndex++)
        {
            if(nums[fastIndex]!=val)
            {
                nums[lowIndex++] = nums[fastIndex];
            }
        }
        return lowIndex;
    }
};

66. 加一

我写的,能过一半用例,笨方法。只是想确定一下笨方法可不可行,不管笨不笨,能拿到分就是好方法。
class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        stack<int> stack;
        vector<int> res;
        uint num = 0;
        uint cont = 1;
        for(int i = digits.size()-1;i >= 0;i--)
        {
            num += digits[i]*cont;
            cont *= 10;
        }
        cout <<num;
        num += 1;
    
        while(num!=0)
        {
            stack.push(num%10);
            num = num/10;
        }
        while(!stack.empty())
        {
            res.push_back(stack.top());
            stack.pop();
        }
        return res;
    }
};

 

比较好的方法,使用笨方法的原因也是不知道vector可以很方便的在头插入数据。
class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int len = digits.size();
        for(int i = len - 1; i >=0; i--)
        {
            if(++digits[i] < 10)
            {
                return digits;
            }
            else
            {
                digits[i] = digits[i] % 10;
            }
        }
        digits.insert(digits.begin(), 1);
        return digits;
    }
};

88. 合并两个有序数组

题目没限制就用sort

class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        for(int i = 0; i !=n;i++)
        {
            nums1[m+i] = nums2[i];
        }
        sort(nums1.begin(), nums1.end());
    }
};

 由于是数组,不好在nums1上进行操作,既然题目没限制,就用额外空间去存,然后转到nums1上。

我写的
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int i = 0,j=0;
        vector<int> res;
        while(i!=m&&j!=n)
        {
            if(nums1[i] <= nums2[j])
            {
                res.push_back(nums1[i]);
                i++;
            }
            else
            {
                res.push_back(nums2[j]);
                j++;
            }
        }
        if(i == m)
        {
            while(j!=n)
            {
                res.push_back(nums2[j++]);
            }
        }
        else{
            while(i!=m)
            {
                res.push_back(nums1[i++]);
            }
        }
        for (int i = 0; i != m + n; ++i) {
            nums1[i] = res[i];
        }
    }
};


力扣写的
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int p1 = 0, p2 = 0;
        int sorted[m + n];
        int cur;
        while (p1 < m || p2 < n) {
            if (p1 == m) {
                cur = nums2[p2++];
            } else if (p2 == n) {
                cur = nums1[p1++];
            } else if (nums1[p1] < nums2[p2]) {
                cur = nums1[p1++];
            } else {
                cur = nums2[p2++];
            }
            sorted[p1 + p2 - 1] = cur;
        }
        for (int i = 0; i != m + n; ++i) {
            nums1[i] = sorted[i];
        }
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/merge-sorted-array/solutions/666608/he-bing-liang-ge-you-xu-shu-zu-by-leetco-rrb0/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

相关文章

销售管理之反向与正向目标控制

在销售活动中&#xff0c;控制力是关键。但控制力其实分为两种&#xff1a;反向控制和正向控制。本文将深入探讨这两种控制方式&#xff0c;并阐述如何在销售活动中加以应用&#xff0c;以提升销售效果。 一、反向控制&#xff1a;以客户为中心&#xff0c;引导客户需求 反向控…

BJFU|算法设计与分析-期末考试凡人AK备考模板

感谢这套模板&#xff0c;本人不是ACM佬但是在期末的时候打出了凡人AK的成绩&#xff0c;真的很强&#xff0c;谁用谁赞。 另外还给我押中了压轴题&#xff0c;非常幸运。 文件下载地址在文章末尾 文件下载地址&#xff1a;【免费】BJFU算法设计与分析备考模板.docx资源-CSD…

SICP解读指南:深度阅读 “计算机领域三巨头” 之一(文末送书)

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 书籍介绍1.1 SICP侧重点1.2 SICP章节介绍 二. 书籍推荐2.1 书籍介绍2.2 推…

如何在Linux系统Docker本地部署SimpleMindMap并实现远程访问?

文章目录 1. Docker一键部署思维导图2. 本地访问测试3. Linux安装Cpolar4. 配置公网地址5. 远程访问思维导图6. 固定Cpolar公网地址7. 固定地址访问 SimpleMindMap 是一个可私有部署的web思维导图工具。它提供了丰富的功能和特性&#xff0c;包含插件化架构、多种结构类型&…

探索SRM软件:了解SRM在企业中的作用

作为供应商&#xff0c;对于SRM软件并不陌生&#xff0c;但对于刚刚进入采购行业的新手来说&#xff0c;就可能不太了解这个软件的作用了。现在让我们来科普一下&#xff1a;通常&#xff0c;我们将SRM称为供应商关系管理&#xff0c;其全称为Supplier Relationship Management…

java在cmd中乱码的问题解决

本文深入探讨了在使用 Java 命令行&#xff08;cmd&#xff09;时可能出现的中文乱码问题&#xff0c;并提供了两种解决方案。首先&#xff0c;通过临时的方式&#xff0c;用户可以执行命令 chcp 936 选择字符集&#xff0c;然后再运行 Java 命令&#xff0c;确保在选择字符集过…

如何定期跟踪和评估OKR的进度

设定跟踪周期 根据公司的实际情况和需要&#xff0c;设定合适的OKR跟踪周期。这个周期可以是每周、每月或每季度&#xff0c;以便及时了解OKR的进展情况。 使用进度图表 利用进度图表来可视化OKR的完成情况。这可以帮助团队更直观地了解目标的进度和剩余任务量&#xff0c;以…

【二分查找】【map]436. 寻找右区间

本文涉及的基础知识点 二分查找算法合集 LeetCode 436. 寻找右区间 给你一个区间数组 intervals &#xff0c;其中 intervals[i] [starti, endi] &#xff0c;且每个 starti 都 不同 。 区间 i 的 右侧区间 可以记作区间 j &#xff0c;并满足 startj > endi &#xff0…

解决java: 无法访问javax.servlet.ServletException

问题 在对历往项目工具类总结和归纳更新过程中&#xff0c;common模块在compile编译过程中遇到了“Error java: 无法访问javax.servlet.ServletException 找不到javax.servlet.ServletException的类文件”这个报错问题。 IDE使用的是idea2021。 解决方法 pom中增加如下依赖&…

深度学习summary的网络结构Layer (type) Output Shape Param什么意思?

这行语句什么意思&#xff1f; Layer (type) Output Shape Param # Conv1d-1 [128, 16, 6] 64详细解释 这段信息是从一个深度学习模型的摘要中截取的&#xff0c;它描述了模型中的某一层&#xff08;Layer&#xff09;的信息。 Layer (type): 这部…

义乌等保测评公司有哪些?用哪款堡垒机好?

对于义乌&#xff0c;相信大家都听过&#xff0c;也都知道&#xff0c;耳熟能详。这不有义乌小伙伴在问&#xff0c;义乌等保测评公司有哪些&#xff1f;用哪款堡垒机好&#xff1f;今天我们就来简单聊聊。 义乌等保测评公司有哪些&#xff1f; 目前浙江义乌本地暂未有正规等保…

发布 flatpak 应用 (flathub)

警告: flathub 网站目前只支持显示英文, 这一点必须强烈差评 !!! 世界上至少有几百种不同的 GNU/Linux 发行版, 常见的都有几十种. 如何给这么多不同版本的系统发布软件, 对开发者是个大难题. flatpak 提供了一种统一发布应用的方式, 一次发布, 理论上适用于所有发行版的系统…

Flink实时数仓同步:实时表实战详解

一、背景 在大数据领域&#xff0c;初始阶段业务数据通常被存储于关系型数据库&#xff0c;如MySQL。然而&#xff0c;为满足日常分析和报表等需求&#xff0c;大数据平台采用多种同步方式&#xff0c;以适应这些业务数据的不同存储需求。这些同步存储方式包括离线仓库和实时仓…

鸿蒙NEXT实战开发:【截屏】

展示全屏截图和屏幕局部截图。通过[screenshot]模块实现屏幕截图 &#xff0c;通过[window]模块实现隐私窗口切换&#xff0c;通过[display]模块查询当前隐私窗口。 效果预览 全屏截图局部截图选择区域局部截图 使用说明&#xff1a; 点击右上角图标打开弹窗&#xff0c;选…

vulhub中ThinkPHP 多语言本地文件包含漏洞复现

ThinkPHP是一个在中国使用较多的PHP框架。在其6.0.13版本及以前&#xff0c;存在一处本地文件包含漏洞。当多语言特性被开启时&#xff0c;攻击者可以使用lang参数来包含任意PHP文件。 虽然只能包含本地PHP文件&#xff0c;但在开启了register_argc_argv且安装了pcel/pear的环…

【C语言】glibc

一、获取源码 apt install glibc-source 在Debian系统中&#xff0c;通过apt install glibc-source命令安装的glibc源码通常会被放置在/usr/src/glibc目录下。安装完成后&#xff0c;可能需要解压缩该源码包。以下是解压缩源码包的步骤&#xff1a; 1. 打开终端。 2. 切换到源…

zipkin Access denied for user ‘xxx‘@‘xxx‘ (using password: NO)

Access denied : 拒绝访问 解决方案&#xff1a; 授权 登录mysql 之后执行命令 step 1 mysql -u username -p // username: 替换成你sql 用户名step2 授权 alter user usernameip identified with mysql_native_password by password // step 3 刷新 flush privileges;

每日一练 | 华为认证真题练习Day194

1、下面是路由器Huawei的部分输出配置&#xff0c;关于该部分配置描迷正确的是: [huawei] bgp 100 [huawei-bgp]peer 12.12.12.2 ip-prefix P1 export [huawei]ip-prefix P1 index 5 deny 10.0.0.0 0 greater-equal 8 less-equal 32 [huawei]ip-prefix P1 index 5 deny 172…

【wine】解决 0024:fixme:msctf:KeystrokeMgr_TestKeyUp STUB:(00A3D508)

故障日志 0024:fixme:msctf:KeystrokeMgr_TestKeyUp STUB:(00A3D508) AI分析 这些消息表示Wine对IE内核组件以及IME&#xff08;Input Method Editor&#xff0c;输入法编辑器&#xff09;的支持不完全。特别是涉及文本输入、拖放事件、属性变化通知等功能。 解决 winetrick…

redis最新版本在Windows系统上的安装

一、说明 这次安装操作主要是根据redis官网说明&#xff0c;一步步安装下来的&#xff0c;英语比较好的同学&#xff0c;可以直接看文章底部的超链接1&#xff0c;跳到官网按步操作即可。 目前redis的最新稳定版本为redis7.2。 二、Windows环境改造 Redis在Windows上不被官方…