首页 > 编程语言 >原地移除元素--c++版

原地移除元素--c++版

时间:2023-11-24 16:36:43浏览次数:43  
标签:val nums -- c++ int tail 移除 ptr

代码

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        //暴力法
        // int numSize = nums.size();
        // int ptr = 0;
        // int count = numSize;
        // int tail = numSize - 1;//如果最后是val,val就变多了,设置一个尾巴是为防止val变多
        // //1. 找尾巴
        // while (tail >= 0 && nums[tail] == val) {
        //     tail--;
        //     count--;
        // } 
        // //cout << tail;
        // //特俗情况
        // if (tail == -1) {
        //     nums.clear();
        //     std::vector<int>().swap(nums);
        // }
        // //2. 从前往后找,找到一个val,就覆盖,没找到就ptr+1,这里是if else关系,不是每次都要ptr+1
        // while (ptr < tail) {
        //     //1. 找到val
        //     if (val == nums[ptr]) {
        //         //2. 覆盖
        //         int prev = ptr;
        //         int next = ptr + 1;
        //         while (next <= tail) {//<=是为了把最后一个元素也参与覆盖
        //             nums[prev] = nums[next];
        //             prev++;
        //             next++;
        //         }
        //         count--;
        //     }
        //     else ptr++;
        // }
        // return count;


        //双指针,思路:fast指针指向需要给新数组的元素,slow指针指向新数组的下标
        int fast = 0;
        int slow = 0;
        int numSize = nums.size();

        while (fast < numSize) {
            if (nums[fast] == val) fast++;
            else nums[slow++] = nums[fast++];
        }

        return slow;
    }
};

标签:val,nums,--,c++,int,tail,移除,ptr
From: https://www.cnblogs.com/luo-greenhand/p/17854041.html

相关文章

  • Linux下Oracle11G数据备份恢复(RMAN)
    数据库安装参考步骤1--14https://www.cnblogs.com/baixisuozai/p/17852235.html创建初始pfile文件$viminit.umpay.ora文件内容:umpay.__java_pool_size=4194304umpay.__large_pool_size=4194304umpay.__oracle_base='/DataBase/app/oracle'#ORACLE_BASEsetfromenv......
  • 2023-11-23
    2023-11-23集合体系结构​​​​‍Collection接口和常用方法常用方法add()添加单个元素remove()删除指定元素contains()查找元素是否存在size()获取元素个数isEmpty()判断是否为空clear()清空addAll()添加多个元素containsAll()查找多个元素是否存在remov......
  • 从外卖配送的视角看:可视化技术如何改变行业格局
    随着互联网技术的不断发展,外卖配送行业也迎来了快速发展的时代。而随之而来的是越来越多的用户对于外卖配送的质量和效率提出了更高的要求。如何让外卖配送更加可视化,成为了外卖配送行业亟需解决的问题。 外卖配送可视化是指通过技术手段,将外卖配送的整个流程进行可视化展示,让......
  • 微服务的例子
    微服务是一种软件开发架构模式,它将一个大型、复杂的应用程序拆分为多个小型、独立的服务的集合。这些服务之间相互协作,共同完成整体应用程序的功能。微服务架构具有敏捷、灵活、可扩展性等特点,能够应对日益复杂的业务需求和快速变化的市场环境。举个例子,假设有一个电商网站,采用微......
  • pip更新失败问题
    在使用pip安装python插件时,发现pip版本过低导致安装失败,于是使用命令pipinstall--upgradepip更新pip,结果出现如下错误,多次尝试都无法更新成功。失败原因是网络原因导致的,最终找到方法,使用本地镜像更新pip,更新成功。本地镜像更新命令如下:python-mpipinstall--upgradepip......
  • k8s配置与密钥管理
    1、configmap1.1configmap创建方式命令行创建方式#kubectlcreateconfigmapcm1--from-literal=host=127.0.0.1--from-literal=port=3306configmap/cm1created#kubectldescribecmcm1Name:cm1Namespace:defaultLabels:<none>Annotations:......
  • 羚通视频智能分析平台:安全帽佩戴检测识别系统与智能监控安全帽识别算法
    在现代工业生产中,安全生产是每个企业都必须重视的问题。其中,工人是否正确佩戴安全帽是一个重要的环节。为了解决这个问题,羚通视频智能分析平台推出了一款安全帽佩戴检测识别系统,通过智能监控安全帽识别算法,实现了对工人是否佩戴安全帽的自动检测和识别。一、羚通视频......
  • 特斯拉开源 Roadster 文件随便用;微软 Copilot AI 技术开放或不对大陆开放丨 RTE 开发
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑的个人观点,......
  • 11.24每日总结
    importmatplotlibasmatplotlibimportnumpyasnpimportpandasaspdimportseabornassnsfrompandasimportDataFrame,Series#可视化显示在界面#matplotlibinlineimportmatplotlibimportmatplotlib.pyplotaspltfromwordcloudimportSTOPWORDS,......
  • LeetCode二叉树小题目
    Q1将有序数组转换为二叉搜索树题目大致意思就是从一个数组建立平衡的二叉搜索树。由于数组以及进行了升序处理,我们只要考虑好怎么做到平衡的。平衡意味着左右子树的高度差不能大于1。由此我们可以想着是否能用类似二分+递归来解决。如果left>right,直接返回nullpter否则......