网站建设公司推广方式华能电子商务平台

张小明 2026/3/12 5:16:44
网站建设公司推广方式,华能电子商务平台,360搜索首页,有一个可以做任务的网站面试经典150题之移除元素 一、题目 1.题目描述 给你一个数组 nums 和一个值 val#xff0c;你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k#xff0c;要通过此题你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。假设 nums 中不等于 val 的元素数量为 k要通过此题您需要执行以下操作更改 nums 数组使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。返回 k。2.题目分析这是一道移除数组中元素的题目我们需要做到原地移除但是题目说了不会去管超过我们返回给它的值之后的数字因此我们有两种思路一种是直接将所有等于val的数字全部都移动到第k个数之后并且这种方法是基于交换的即整个数组包含的数是没有变的另一种是将所有不等于val的数直接排到前K个而不管k之后是否有不等于val的数。下面我将介绍4种方法并且对我踩的一些坑也简要的说明。二、具体方法1.直接用remove函数解决whilevalinnums:nums.remove(val)returnlen(nums)由于remove函数能够直接删去列表中第一个匹配的值因此直接适用能够删去列表中所有等于val的值。这种方法相对简单但是前提是我们要知道remove函数的用法。2.新列表承接再替换num_true[iforiinnumsifi!val]foriinrange(len(num_true)):nums[i]num_true[i]returnlen(num_true)我们可以用一个全新的列表来讲数组中所有的符合要求的值全部都记录下来然后再讲这个新的列表的值按顺序插入到原来的列表中去。这种方法也很简单不太符合题目的要求因为题目要求原地排序不过在日常我们自己的代码中需要的时候可以使用。下面我将介绍两种相对来说比较有意思的方法3.以栈的思维来看数组defremoveElement(self,nums,val): :type nums: List[int] :type val: int :rtype: int stack_size0forxinnums:ifx!val:nums[stack_size]x stack_size1returnstack_size我们将nums数组看做一个栈在我们没有看这个数组之前我们没有确定栈里面的任意一个元素因此初始的栈的大小为0。然后我们遍历数组的元素如果这个元素不为val我们就把这个数组压入栈中并且将栈的大小也进行相应的调整。最后我们返回栈的大小。4.双指针置换法defremoveElement(self,nums,val): :type nums: List[int] :type val: int :rtype: int left0rightlen(nums)-1whileleftright:if(nums[left]val)and(nums[right]!val):tempnums[right]nums[right]nums[left]nums[left]temp left1right-1elif(nums[right]val):right-1else:left1returnleft这个方法的核心思路就是要设立两个指针一个一开始指向最左端一个刚开始指向最右端。然后将所有为val的值都移到数组的右边。如果左指针指向的值为val且有指针指向的值不为val的话我们就将左指针指向的值和有指针指向的值交换并且左指针右移右指针左移。不论左指针是否为val只要右指针为val就将右指针左移。这里我们可以具体的解释一下如果左指针指向的数不为val且右指针指向的值为val的话当前右指针指向的位置已经为val了所以我们要往前找到不是val的进行再进行操作。如果左右都是我们可以通过移动右指针来转换为第一种情况最后一种情况也就是左指针指向的不是并且右指针指向的也不是那么我们将左指针向右移动即可右指针不需要一定因为右指针指向的人这个地方还可以换成val但是现在没有换最后结束的条件就是左指针比右指针大了返回值就为左指针的数值。三、我踩的坑我一开始些的代码是下面这样的defremoveElement(self,nums,val): :type nums: List[int] :type val: int :rtype: int foriinnums:ifival:nums.remove(i)returnlen(nums)乍一看我的这个代码和前面的第一种方法的代码很像但是为什么我这样些就不行呢因为for i in nums 循环是基于列表迭代器实现的迭代器会按顺序读取列表的索引0→1→2→…。在循环中执行 nums.remove(i) 时列表长度变短、元素前移迭代器的指针会跳过部分元素导致漏删。后面我又尝试用for i in range (len(nums)):进行迭代 但是这样也是错的一旦在某次循环中又元素删除的话那么len(nums)就会随着改变会出现和上面一样的问题。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

福田网站建设方案服务宿州做网站的公司有哪些

还在为复杂的3D建模软件头疼吗?想亲手制作专属的立体纪念品却苦于没有专业技能?ImageToSTL正是为您量身打造的完美解决方案!这款智能工具能将任何普通图片快速转换为可直接3D打印的STL模型,让每个人都能轻松踏入3D创作的世界。 【…

张小明 2026/3/5 2:55:05 网站建设

wordpress 仿百度六安做网站seo

浏览器PT下载神器:PT助手Plus全平台安装与配置指南 【免费下载链接】PT-Plugin-Plus PT 助手 Plus,为 Microsoft Edge、Google Chrome、Firefox 浏览器插件(Web Extensions),主要用于辅助下载 PT 站的种子。 项目地址…

张小明 2026/3/5 2:55:10 网站建设

哈尔滨网站建设丿薇上海公司推荐

亲爱的商家朋友们,您是否也曾遇到过这样的困境:每天花费数小时蹲守竞品直播间,手抄达人ID,手动发送合作邀约,结果回应寥寥无几?好不容易合作几次,却发现一半是“刷量号”,推广费用打…

张小明 2026/3/5 2:55:12 网站建设

vue做的pc线上网站.net 网站开发

目录引言计算机视觉基础图像的数字化表示图像预处理卷积神经网络(CNN)基础卷积操作池化层激活函数构建完整的CNN模型目标检测基础边界框表示非极大值抑制(NMS)实战项目:简单的目标检测器数据准备简化的YOLO风格检测器训…

张小明 2026/3/5 2:55:13 网站建设

深圳 企业 网站建设哪家好上海企业公示信息查询系统

数据结构期末复习:递归与循环核心算法实战总结期末冲刺必备! 递归与循环是数据结构课程中的高频考点,也是编程思维训练的核心内容。本文结合三大经典问题(阶乘、斐波那契、数组最小值查找),系统梳理递归与循…

张小明 2026/3/5 2:55:16 网站建设

国内做外卖的网站有哪些网站建设哪家信誉好

香橙派赋能水稻病虫害精准识别:AI边缘计算守护粮食安全 作为全球三大粮食作物之一,水稻的产量安全直接关系到全球粮食供给稳定。然而,细菌性穗枯病、稻瘟病等常见病虫害常导致水稻减产甚至绝收,传统人工识别方式不仅效率低下&…

张小明 2026/3/5 2:55:12 网站建设