用Rust刷LeetCode之27 移除元素

27. 移除元素

难度: 简单

原描述:

alt

新描述:

alt



func removeElement(nums []int, val int) int {
 for i := 0; i < len(nums); i++ {
  if nums[i] == val {
   nums = append(nums[:i], nums[i+1:]...)
   i--
  }
 }
 return len(nums)

}
alt

Rust 版本


下面这种写法编译无法通过:

pub fn remove_element(nums: &mut Vec<i32>, val: i32) -> i32 {
    for i in 0..nums.len() {
        if nums[i] == val {
            nums.remove(i);
            i = i - 1;
        }
    }

    return nums.len() as i32;
}

error[E0384]: cannot assign twice to immutable variable i


在 Rust 中,for 循环中的循环变量是不可变的,因此不能直接修改 i 的值。如果想在循环中修改 i 的值,可以改用 while 循环,并手动更新 i 的值。以下是一个示例的实现:

fn main() {
    let mut nums = vec![3141592654];
    let len = remove_element(&mut nums, 4);
    println!("移除元素后vec的长度为: {:?}", len); // 输出: 8
}

pub fn remove_element(nums: &mut Vec<i32>, val: i32) -> i32 {
    let mut i = 0;

    while i < nums.len() {
        if nums[i] == val {
            nums.remove(i);
        } else {
            i += 1;
        }
    }

    nums.len() as i32
}
alt

本文由 mdnice 多平台发布

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

标准成本核算基础知识 - 了解成本构成结构 - Part3

原文地址:Basics of Standard Costing – Understanding the Cost Component Structure-Part 3 | SAP Blogs 本文档是我的第二份文档http://scn.sap.com/docs/DOC-49167的延续- SAP 标准成本估算基础知识 - 了解成本核算变式 - 该系列的第 2 部分和第 3 部分 本文档解释了成本…

智能优化算法应用:基于蚁狮算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于蚁狮算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于蚁狮算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蚁狮算法4.实验参数设定5.算法结果6.参考文献7.MA…

【腾讯云 HAI域探秘】StableDiffusionWebUI 让我找到了宫崎骏动漫里的夏天

目录 前言一、HAI二、应用场景三、构建 Stable Diffusion 模型1、新建HAI应用2、StableDiffusionWebUI&#xff08;1&#xff09;功能介绍&#xff08;2&#xff09;页面转中文&#xff08;3&#xff09;AI绘图① 正向提示词语② 反向提示词③ “” 、“ AND”、“|” 用法④ 权…

知识付费商城7.0.3开心学习版,新增供货商功能

彩虹知识付费商城7.0.3小森升级版新增供货商开心学习版。仅供开发参考&#xff0c;切勿正式商用。 1.新增邮件提醒功能&#xff0c;支持给用户发订单、结算等邮件通知 2.支持给管理员发送提现、域名审核等邮件通知 3.支持设置手续费最低扣除金额 4.修复了其他一些已知问题 …

交换机与VLAN

交换机简介 交换机的作用 如今随着计算机速度不断提高&#xff0c;以及网络应用越来越多&#xff0c;局域网的负载变得越来越大了&#xff0c;交换机的使用也变得更有必要。交换机的作用主要有两个&#xff1a;一个是维护CAM&#xff08;Context Address Memory&#xff09;表…

低多边形建筑3D模型纹理贴图

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时&#xff0c;有几种不同的风格&#xf…

c++新经典模板与泛型编程:引用类型的移除与增加

引用类型的移除 c11标准库中提供了一个std::remove_reference类模板&#xff0c;如果传递进来的模板参数是一个引用类型&#xff0c;则会把这个引用类型中的引用部分删除&#xff0c;先看一下用法&#xff1a; #include <iostream>template<class T1,class T2> vo…

Mysql研学-认识与安装

一 数据库 1 Java的数据存储技术 ① 变量:一个数据存储空间的表示 ② 数组:存储一组相同数据类型的"容器" ③ 集合:存储一组任意引用数据类型的"容器" ④ 配置文件: .properties:基于Properties集合存储(Map集合的具体实例) .xml文件:基于标签存储数据…

【精选】设计模式——工厂设计模式

工厂设计模式是一种创建型设计模式&#xff0c;其主要目的是通过将对象的创建过程封装在一个工厂类中来实现对象的创建。这样可以降低客户端与具体产品类之间的耦合度&#xff0c;也便于代码的扩展和维护。 工厂设计模式&#xff1a; 以下是Java中两个常见的工厂设计模式示例…

LCR 090. 打家劫舍 II(leetcode)动态规划

文章目录 前言一、题目分析二、算法原理1.状态表示2.状态转移方程3.初始化4.填表顺序5.返回值是什么 三、代码实现总结 前言 在本文章中&#xff0c;我们将要详细介绍一下LeetcodeLCR 090. 打家劫舍 II。采用动态规划解决&#xff0c;这是一道经典的多状态dp问题 一、题目分析…

Qt开发 之 Qt5各版本情况分析

文章目录 1、简介2、Qt5 版本归纳3、下载地址3.1、典型版本3.1.1、Qt5.0.03.1.2、Qt5.9.93.1.3、Qt5.12.12 3.2、当前Qt5最新版本 1、简介 Qt6 出生刚刚好一年的时间&#xff0c;已经出到6.6版本&#xff0c;带来了许多的新特性和改进。今天刚刚好抽空总结下陪伴 我工作这么长…

【vim】常用操作

用的时候看看&#xff0c;记太多也没用&#xff0c;下面都是最常用的&#xff0c;更多去查文档vim指令集。 以下均为正常模式下面操作&#xff0c;正在编辑的&#xff0c;先etc一下. 1/拷贝当前行 yy&#xff0c;5yy为拷贝包含当前行往下五行 2/p将拷贝的东西粘贴到当前行下…

学习Linux(2)-学习Linux命令

Linux目录结构 Linux目录结构-菜鸟教程 /bin&#xff1a;bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot&#xff1a;这里存放的是启动 Linux 时使用的一些核心文件&#xff0c;包括一些连接文件以及镜像文件。 /dev &#xff1a;dev 是 De…

【Vue】登录注册界面制作

1. 创建vue项目 https://blog.csdn.net/m0_67930426/article/details/134816155?spm1001.2014.3001.5502 2. 整合element-ui https://blog.csdn.net/m0_67930426/article/details/134827986?spm1001.2014.3001.5502 在view目录下创建文件 本篇内容使用到了 v-model cl…

飞天使-linux操作的一些技巧与知识点3

http工作原理 http1.0 协议 使用的是短连接&#xff0c;建立一次tcp连接&#xff0c;发起一次http的请求&#xff0c;结束&#xff0c;tcp断开 http1.1 协议使用的是长连接&#xff0c;建立一次tcp的连接&#xff0c;发起多次http的请求&#xff0c;结束&#xff0c;tcp断开ngi…

企业快递账单管理教程

快递账单管理怎么做&#xff0c;才能更高效&#xff1f;想要回答这个问题&#xff0c;首先我们要了解现如今企业快递账单管理的大致有哪些方式&#xff1a; 1、纸质化管理 纸质化管理现在虽然少见&#xff0c;但是我们应该挺熟悉。在电子面单面试之前&#xff0c;企业快递账单…

go学习笔记(17)Blob and ArrayBuffer

最近在学习go websocket的时候&#xff0c;在学习实验过程遇到一个比较奇怪问题。为什么我的数据返回是blob&#xff0c;而不是arrayBuffer&#xff1f;百思不得其解。 直到同事打包的时候微信小游戏遇到了一个报错。FileReader不支持。 经过在社区查询&#xff0c;官方答复是…

链表OJ—环形链表||

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 1、环形链表题目&#xff1a; 2、方法讲解&#xff1a; 图文解析&#xff1a; 代码实现&#xff1a; 其他的两种情况&#xff1a; 总结 前言 世上有两种耀眼的光芒…

leetcode刷题日志-54螺旋矩阵

思路&#xff1a; 上下左右设置四个边界 每走完一行或者一列&#xff0c;移动相应边界&#xff0c;当左边界大于右边界&#xff0c;或者上边界大于下边界时&#xff0c;结束 代码如下&#xff1a; class Solution {public List<Integer> spiralOrder(int[][] matrix) {…