网站运营总监,南昌企业建站系统,做番号类网站违法吗,深圳免费网站设计写在前面 最近想复习一下数据结构与算法相关的内容#xff0c;找一些题来做一做。如有更好思路#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 给你一个数组 nums 和一个值 val#xff0c;你需要 原地移除所有数值等于…写在前面 最近想复习一下数据结构与算法相关的内容找一些题来做一做。如有更好思路欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 给你一个数组 nums 和一个值 val你需要 原地移除所有数值等于val的元素并返回移除后数组的新长度。
不要使用额外的数组空间你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
示例 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,4,0,3]
解释函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。
注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。提示
0 nums.length 100
0 nums[i] 50
0 val 100二、具体步骤
1.环境说明
名称说明IntelliJ IDEA2019.2
2.代码
以下为Java版本实现
public class Lc27_removeElement {public static void main(String[] args) {int[] nums {0, 1, 2, 2, 3, 0, 4, 2};System.out.println(removeElement0(nums, 2));
// System.out.println(Arrays.toString(nums));}/*** 思路** 快慢双指针* 当快指针指向的值不等于val的时候快慢都向前移动还要交换移动元素最后返回慢指针** 定义slow0* for(int fast 0; fast num.length; fast)* if (nums[fast] ! val) nums[slow] nums[fast]** 最后返回slow**/public static int removeElement(int[] nums, int val) {int slow 0;for (int fast 0; fast nums.length; fast) {// 不等于val的快慢同时移动并交换值slow可能是等于val的if (nums[fast] ! val) {
// int temp nums[fast];
// nums[fast] nums[slow];
// nums[slow] temp;nums[slow] nums[fast];}}return slow;} 写在后面 如果本文内容对您有价值或者有启发的话欢迎点赞、关注、评论和转发。您的反馈和陪伴将促进我们共同进步和成长。