LeetCode27. 移除元素

怼烎@ 2022-05-26 04:29 365阅读 0赞

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例 1:

  1. 给定 nums = [3,2,2,3], val = 3,
  2. 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2
  3. 你不需要考虑数组中超出新长度后面的元素。

示例 2:

  1. 给定 nums = [0,1,2,2,3,0,4,2], val = 2,
  2. 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4
  3. 注意这五个元素可为任意顺序。
  4. 你不需要考虑数组中超出新长度后面的元素。
  5. class Solution {
  6. public int removeElement(int[] nums, int val) {
  7. if(nums==null||nums.length==0) {
  8. return 0;
  9. }
  10. int count=nums.length;
  11. int i,j;
  12. for(i=0,j=nums.length-1;i<j;) {
  13. while(nums[j]==val) {
  14. if(i==j)
  15. break;
  16. j--;
  17. }
  18. if(nums[i]==val) {
  19. int temp=nums[i];
  20. nums[i]=nums[j];
  21. nums[j]=temp;
  22. i++;
  23. }else {
  24. i++;
  25. }
  26. }
  27. for(i=0;i<nums.length;i++) {
  28. if(nums[i]==val) {
  29. count--;
  30. }
  31. }
  32. return count;
  33. }
  34. }

发表评论

表情:
评论列表 (有 0 条评论,365人围观)

还没有评论,来说两句吧...

相关阅读

    相关 LeetCode27. 元素

    难度:`简单` 题目描述: > 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 > 不要使用额外

    相关 LeetCode27. 元素

    给定一个数组 nums 和一个值 val,你需要[原地][Link 1]移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在[原地][

    相关 leetcode:27.元素

    题目描述: 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入