当前位置: 首页 > news >正文

福州自助建设网站seo关键词排名优化怎么收费

福州自助建设网站,seo关键词排名优化怎么收费,哈尔滨市建设工程网,青海风控平台app移除元素问题详解与解决方法 1. 介绍 移除元素问题是 LeetCode 经典题目之一#xff0c;要求原地修改输入数组#xff0c;移除所有数值等于给定值的元素#xff0c;并返回新数组的长度。 问题描述 给你一个数组 nums 和一个值 val#xff0c;你需要 原地 移除所有数值等…移除元素问题详解与解决方法 1. 介绍 移除元素问题是 LeetCode 经典题目之一要求原地修改输入数组移除所有数值等于给定值的元素并返回新数组的长度。 问题描述 给你一个数组 nums 和一个值 val你需要 原地 移除所有数值等于 val 的元素并返回移除后数组的新长度。 不要使用额外的数组空间你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明: 为什么返回数值是整数但输出的答案是数组呢? 请注意输入数组是以「引用」方式传递的这意味着在函数里修改输入数组对于调用者是可见的。 你可以想象内部操作如下: // nums 是以“引用”方式传递的。也就是说不对实参作任何拷贝 int len removeElement(nums, val); // 在函数里修改输入数组对于调用者是可见的。 // 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。 for (int i 0; i len; i) { print(nums[i]); } 示例 1 输入nums [3,2,2,3], val 3 输出2, nums [2,2] 解释函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如函数返回的新长度为 2 而 nums [2,2,3,3] 或 nums [2,2,0,0]也会被视作正确答案。 示例 2 输入nums [0,1,2,2,3,0,4,2], val 2 输出5, nums [0,1,3,0,4] 解释函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。 提示 0 nums.length 100 0 nums[i] 50 0 val 100 2. 解题思路 方法一双指针法 利用双指针技巧一个指针 slow 在前一个指针 fast 在后当 fast 指向的元素等于给定值时将 fast 指针后移当 fast 指向的元素不等于给定值时将 fast 指向的元素复制到 slow 指向的位置并同时移动 slow 和 fast 指针。 方法二快慢指针法 维护一个下标 index初始值为 0遍历数组如果当前元素不等于给定值则将其复制到 index 位置并将 index 后移。 方法三交换移除法 维护两个指针 left 和 right分别指向数组的首尾当 nums[left] 等于给定值时将 nums[left] 和 nums[right] 交换并将 right 指针左移否则将 left 指针右移。 3. 算法实现 方法一实现代码 public int removeElement(int[] nums, int val) {int slow 0;for (int fast 0; fast nums.length; fast) {if (nums[fast] ! val) {nums[slow] nums[fast];}}return slow; }方法二实现代码 public int removeElement(int[] nums, int val) {int index 0;for (int num : nums) {if (num ! val) {nums[index] num;}}return index; }方法三实现代码 public int removeElement(int[] nums, int val) {int left 0;int right nums.length - 1;while (left right) {if (nums[left] val) {nums[left] nums[right];right--;} else {left;}}return left; }4. 复杂度分析 时间复杂度分析 三种方法的时间复杂度均为 O(n)其中 n 为数组的长度因为需要遍历整个数组。 空间复杂度分析 三种方法的空间复杂度均为 O(1)因为只使用了常数个额外变量。 5. 测试与验证 测试用例设计 输入数组为空输入数组中不存在给定值输入数组中所有元素均为给定值输入数组中部分元素为给定值 测试结果分析 根据不同的测试用例分析三种方法的输出结果验证算法的正确性。 6. 扩展 如何处理特殊情况和边界条件 考虑输入数组为空的情况直接返回 0。考虑输入数组中不存在给定值的情况直接返回原数组的长度。考虑输入数组中所有元素均为给定值的情况直接返回 0。 如何优化算法以提高执行效率 方法一和方法二的效率相似但方法一更加简洁易懂方法二可以省略下标遍历。方法三在交换时可以减少元素移动次数提高效率。 如何处理数组中可能存在的重复元素 可以根据需要选择保留或跳过重复元素。 7. 总结 移除元素问题是一个经典的数组操作问题通过三种不同的解题思路和算法实现可以有效地移除数组中指定的元素并返回新数组的长度。通过本文的详细讲解读者可以更好地理解这个问题掌握解题的关键思路和技巧。 8. 参考文献 LeetCode 官方网站《算法导论》《程序员面试金典》 感谢阅读 期待下一篇…
http://www.w-s-a.com/news/945655/

相关文章:

  • wordpress装多站点百度查一下
  • 怎么优化一个网站搭建网站免费空间
  • 山东建设和城乡建设厅注册中心网站首页wordpress安装教材
  • 个人风采网站制作毕节网站开发公司电话
  • 网络网站销售设计主题和设计理念
  • 做网站一般用什么服务器承德专业做网站
  • 松北区建设局网站网站建设分为几种
  • 网站建设的合同 体会智联招聘网站建设情况
  • 记的网站域名wordpress地方信息主题
  • 淄博好的建网站公司网站建设 海口
  • 有人做网站花了10几万2017做啥网站能致富
  • 做网站有什么软件cod建站平台
  • 合肥学校网站建设怎么做免费的产品图片网站
  • 营养早餐网站的设计与制作建设通网站怎么查项目经理在建
  • 浑南区建设局网站永州网站建设公司推荐
  • 做外贸都得有网站吗绵阳网站建设制作
  • 功能性的网站建设北京餐饮品牌设计公司
  • php做网站优势视频直播软件
  • 怎么安装php网站哪个网站是专门为建设方服务的
  • 重慶网站开发sina app engine wordpress
  • wampserver网站开发步骤中冠工程管理咨询有限公司
  • 自己做网站商城需要营业执照吗老外做牛排的视频网站
  • 网站推广效果的评估指标主要包括公司广告推广
  • 昆明网站建设那家好哪个网站学做凉皮
  • hype做网站动效哪里有给网站做
  • 打扑克网站推广软件设计类专业哪个最好
  • 网站设计首页网站建设意向书
  • 做网站要学那些angularjs后台管理系统网站
  • 广州白云手机网站建设学做点心上哪个网站
  • 哈尔滨网站建设步骤百度青岛代理公司