给你一个数组 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,4,0,3]
解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。

提示:

  • 0 <= nums.length <= 100
  • 0 <= nums[i] <= 50
  • 0 <= val <= 100

解法一:C

int removeElement(int* nums, int numsSize, int val){int j=0;for(int i=0;i<numsSize;i++){if(nums[i]!=val){nums[j]=nums[i];j++;}}return j;
}

解法二:JavaScript

/*** @param {number[]} nums* @param {number} val* @return {number}*/
var removeElement = function(nums, val) {let j=0;for(let i=0;i<nums.length;i++){if(nums[i]!=val){nums[j] = nums[i]j++}}return j;
};

解法三:Java

class Solution {public int removeElement(int[] nums, int val) {int j=0;for(int i=0;i<nums.length;i++){if(nums[i]!= val){nums[j] = nums[i];j++;                                                                                                                               }}return j;}
}

记录这个题是因为使用多个语言进行编程,可以发现他们的写法大致相同,但是由于C/C++没有关于数组的长度的函数,所以不能直接用nums.length,经查询,网上说可以使用sizeof(nums)/sizeof(nums[0])来计算数组长度,但是我发现了不对,并且该问题目前没有被解决,sizeof(nums)显示结果为24,nums[0]显示结果为4,最后len长度为6,但是理论上应该为4,是否是"[ ]"各占了4个位置呢???

class Solution {
public:int removeElement(vector<int>& nums, int val) {int j=0;int len = sizeof(nums)/sizeof(nums[0]);printf("%d\n",sizeof(nums)); //计算整个数组占内存多少单元printf("%d\n",sizeof(nums[0]));//计算nums[0]占内存多少单元printf("%d\n",len);len = sizeof(nums)/sizeof(int);//计算数组共有多少元素printf("%d\n",sizeof(int));//计算int型占内存多少单元printf("%d\n",len); //此处len理论上应该为4// for(int i=0;i<len;i++){//     if(nums[i]!=val){//         nums[j] =nums[i];//         j++;//     }// }return j;}
};

运行结果:

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

LeetCode力扣(27. 移除元素)----Java/JavaScript/C相关推荐

  1. 力扣 27.移除元素 关于数组的存储是连续的问题

    文章目录 题目 思路 AC代码 题目 移除元素 思路 其实一开始的思路,是想数组中出现的元素,删掉不就好了嘛. 但是,要知道,C++中的数组中的元素是连续的,不能删除只能覆盖(不能跟python的列表 ...

  2. #力扣 LeetCode27. 移除元素 #在所有 Java 提交中击败了 100.00% 的用户 @FDDLC

    题目描述: 27. 移除元素 - 力扣(LeetCode) (leetcode-cn.com) Java代码: class Solution { //你需要 原地 移除所有数值等于 val 的元素,并 ...

  3. 【三分钟刷一题力扣】移除元素

    原题: 力扣链接:27. 移除元素 题目简述: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使 ...

  4. 【LeetCode笔记】27. 移除元素(Java、原地)

    文章目录 题目描述 思路 & 代码 更新版 题目描述 打卡每日-感觉和昨天的每日基本上一样,甚至还更简单(简单题我重拳出击!) 思路 & 代码 就是维护一个 nowLen,再遍历一次即 ...

  5. 学渣的刷题之旅 leetcode刷题 27.移除元素

    给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度. 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组. ...

  6. 代码修炼Day1_LeetCode704二分查找27移除元素

    代码修炼Day1_LeetCode704二分查找&27移除元素 一些数组基本知识 数组下标都是从0开始的 数组内存空间的地址是连续的 题目链接: 力扣704二分查找 二分查找思想 针对升序数组 ...

  7. 《LeetCode力扣练习》剑指 Offer 27. 二叉树的镜像 Java

    <LeetCode力扣练习>剑指 Offer 27. 二叉树的镜像 Java 一.资源 题目: 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 例如输入: 4 / 2 7 / \ / ...

  8. 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java

    <LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...

  9. 《LeetCode力扣练习》第75题 颜色分类 Java

    <LeetCode力扣练习>第75题 颜色分类 Java 一.资源 题目: 给定一个包含红色.白色和蓝色.共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按 ...

  10. 《LeetCode力扣练习》剑指 Offer 11. 旋转数组的最小数字 Java

    <LeetCode力扣练习>剑指 Offer 11. 旋转数组的最小数字 Java 一.资源 题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 给你一个可能存在 ...

最新文章

  1. Nginx —— configure的命令参数(nginx编译选项)
  2. 一个基于C++的多线程编程实例(CreateThread函数)
  3. K NEAREST NEIGHBOR 算法(knn)
  4. hdu 5410(背包问题变形)
  5. Boost::context模块callcc的jump_void测试程序
  6. Module build failed (from ./node_modules/babel-loader/lib/index.js) 错误解决
  7. 设计模式:模式或反模式,这就是问题
  8. 201673020127 词频统计软件项目报告
  9. MVC5+EF6之EF CRUD
  10. 如何在 Mac 中对文档进行签名?
  11. 《R语言初学者指南》pdf
  12. 御剑仙侠服务器维护,御剑修仙放置挂机文字游戏
  13. Linux 误删文件后恢复文件
  14. 机器学习sklearn-线性回归
  15. 漏洞复现-Wordpress 4.6 PwnScriptum RCE命令执行
  16. 无穷微积分牵手“知识共享”,如虎添翼,所向无敌
  17. Android终端硬件通讯总结(串口通讯、Usb Com、Usb、蓝牙、Wifi)
  18. Centos杀死进程kill方法大全
  19. .dta matlab,声发射数据文件是.DTA文件格式,如何将这种文件格式转入到MATLAB分析软件中...
  20. Windows XP SP2之初体验

热门文章

  1. c语言FRA地址自动加一,c – 如何使用c语言在framebuffer中绘制图形?
  2. php判断文本不存在,php 怎么判断文件存不存在
  3. java实验多线程机制_使用Java多线程的同步机制编写应用程序 PDF 下载
  4. solr批量导入mysql_Windows系统环境下Solr之Java实战(二)配置从MySQL数据库批量导入索引...
  5. 电大计算机应用基础考试复习,电大 《计算机应用基础》形考作业2
  6. 计算机网络网际协议实验报告,计算机网络课程网际协议IP地址实验报告.doc
  7. python 归一化还原_对python3 一组数值的归一化处理方法详解
  8. java点击按钮在控制台输出_java 怎么获取控制台的数据并且输出到GUI上
  9. mysql按年创建分区表,增加分区表,删除分区表,实战练习
  10. IBM小型机没有显卡,用串口登录需要修改tty,加clocal参数