首页 > 其他分享 >代码随想录2

代码随想录2

时间:2024-10-14 09:32:31浏览次数:7  
标签:val nums int 代码 元素 随想录 数组 指针


题目:移除元素:
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。 你不需要考虑数组中超出新长度后面的元素。

示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。


采用双指针的方式。将值等于val的元素移动到数组后面。
右指针记录当前可供后移的位置。左指针记录当前查看的元素。如果当前元素==val,则置换到右指针所指位置。右指针前移指向下一个可供替换的位置。
否则左指针后移,查看下一个元素。

#include<iostream>
#include<vector>
using namespace std;


int removeElement(vector<int>&nums,int val)
{

    int right=nums.size()-1;
    int current=0;

    while(current<=right)
    {
        if (nums[current]==val)
        {
            int temp=nums[right];
            nums[right]=nums[current];
            nums[current]=temp;
            right--;
        }
        else
        {
            current++;
        }
    }
    return right+1;
}

int main()
{

    vector<int>nums={0,1,2,2,3,0,4,2};
    int result=removeElement(nums,2);
    cout<<result<<endl;
    for(int i =0;i<nums.size();i++)
    {
        cout<<nums[i]<<endl;
    }
    return 0;
}

标签:val,nums,int,代码,元素,随想录,数组,指针
From: https://www.cnblogs.com/jiyuebo/p/18463457

相关文章

  • 102基于java ssm springboot软件技术交流平台系统代码分享(源码+文档+运行视频+讲解视
    项目技术:Springboot+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows......
  • 2021年华为杯数学建模竞赛D题论文和代码
     抗乳腺癌候选药物的优化建模乳腺癌是女性癌症高发性恶性肿瘤,近年来发病率和死亡率逐年上升,严重危害了女性健康。如何使用数学模型辅助专家高效研发抗乳腺癌药物具有重要意义。本文通过构建化合物的定量结构-活性关系(QSAR)模型来筛选潜在活性化合物,使其不仅具有较好的生物......
  • 2021年华为杯数学建模竞赛E题论文和代码
     草原放牧策略研究本文研究了多因素影响下的草原生态环境演化与放牧策略的关系,通过机理分析分别构建了放牧策略对土壤湿度、植被生物量、土壤化学性质影响模型,以此为基础得到了未来土壤湿度和土壤化学物质含量的预测值,并通过分析得到能够实现可持续发展的最优放牧策略和不......
  • 两段相同的代码【async await】
    asyncfunctiondoSubmitFile(){constfileInput=document.getElementById('fileInput')constfileObj=fileInput.files[0]constformData=newFormData()formData.append('file',fileObj)try{constresponse=await_axi......
  • 代码审计[二] [GYCTF2020]Easyphp
    代码审计做的好难受的一道反序列化[GYCTF2020]Easyphp参考[GYCTF2020]Easyphp-CSDN博客查看整个网站,尝试弱口令登录,不行。猜网页,register、upload都试了一下,发现www.zip可以下载网页源码。login.php<?phprequire_once('lib.php');?><?php$user=newuser();if(isset($_......
  • 「撸一手好代码」设计模式之单一职责原则
    在软件开发的世界里,随着项目规模的扩大和复杂度的增加,保持代码的清晰和可维护性变得尤为重要。而单一职责原则正是我们手中的一把利剑,帮助我们构建更加健壮、灵活的系统。一、什么是单一职责原则?单一职责原则(SingleResponsibilityPrinciple,简称SRP)是面向对象设计的基本......
  • C语言中以下概念,以及这些概念之间的关系: 1.代码段 2.数据段 3.堆栈 4.全局变量 5.局部
    在C语言程序中,内存布局通常被分为几个主要的区域,每个区域都有不同的用途。以下是关于代码段、数据段、堆栈、全局变量、局部变量和函数的详细描述,以及它们之间的关系。1.代码段(TextSegment)代码段(也称为textsegment)是程序的只读部分,存储的是程序的指令(即代码)。这是可执行文......
  • 代码随想录1
    一个简单的二分查找题。CPP代码。二分查找需要注意的地方就是区间的问题。如果是while(left<right)。就代表着区间定义是[left,right),即右边界取不到。因此当right缩小至middle时候只需要:while(left<right){...if(nums[middle]<target)right=middle;...}如果是两边并区间......
  • 代码随想录算法训练营 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III
    198.打家劫舍题目链接:198.打家劫舍文档讲解︰代码随想录(programmercarl.com)视频讲解︰打家劫舍日期:2024-10-13想法:dp[i]到第i个房子时能偷的最多的钱;递推公式:是上上一栋房子的dp[i-2]加上这栋房子的钱nums[i]大还是上一家邻居偷的钱dp[i-1]的大;初始化因为有i-2;所以初始化......
  • JAVA毕业设计189—基于Java+Springboot+vue的自动售水机管理系统(源代码+数据库+13000
    毕设所有选题:https://blog.csdn.net/2303_76227485/article/details/131104075基于Java+Springboot+vue的自动售水机管理系统(源代码+数据库+13000字论文+任务书)189一、系统介绍本项目前后端分离(可以改为ssm版本),分为用户、员工、管理员三种角色1、用户:注册、登录、......