zoukankan      html  css  js  c++  java
  • 27.删除元素(27. Remove Element)

    题目:

    给定数组和值,删除该值的所有实例并返回新的长度。

    不要为另一个数组分配额外的空间,您必须使用常量内存来执行此操作。

    元素的顺序可以改变。无论你离开新的长度什么都不重要。

    示例:
    给定输入数组nums = [3,2,2,3]val =3

    你的函数应该返回length = 2,num的前两个元素为2。

    方法一:

    思路:

    (1)定义j=0;用来记录数组中不等于val的元素的个数;

    (2)从头开始遍历数组(i=0),若数组中元素与val不相等(即nums[i]!=val)则将nums[i]赋给nums[j],然后将j+1;然后执行下一次循环;若数组中元素与val值相等即(nums[i]!=val),则执行下一次循环;z直到循环执行结束;

      (3)最后返回j;

    代码:

     1 class Solution {
     2     public int removeElement(int[] nums, int val) {
     3         
     4         int j=0;
     5         for(int i=0;i<nums.length;i++){
     6             
     7             if(nums[i]!=val){
     8                 
     9                 nums[j++]=nums[i];
    10                 
    11             }
    12             
    13         }
    14         
    15         return j;
    16     }
    17     
    18 }

    方法二:

    思路:

    (1)首先将数组进行排序;

    (2)定义result=0;用来记录数组中与val不相等的个数;

    (3)从头开始遍历数组若数组中元素与val不相等则将result+1;若数组中存在与val值相等的元素则在其后找到第一个与val不相等的元素的下标赋给i;从i开始依次将数组中剩余元素值赋给resulr;然后将result+1;

    (4)最后返回result;

    代码:

     1 class Solution {
     2     public int removeElement(int[] nums, int val) {
     3         
     4         Arrays.sort(nums);
     5         
     6         int result=0;//未与k重复元素的下标
     7             
     8         for(int i=0;i<nums.length;i++){
     9 
    10             if(nums[i]==val){
    11                 
    12                 //在数组中i之后找到第一个与k不相等的元素的下标
    13                 i=noEqualsK(nums,i+1,val);
    14                 for(;i<nums.length;i++){
    15                     
    16                     nums[result++]=nums[i];
    17                     
    18                 }
    19                 
    20             }else{
    21                 
    22                 result++;
    23                 
    24             }
    25         }
    26         
    27         return result;
    28 
    29     }
    30     //返回数组中i之后找到第一个与k不相等的元素的下标
    31     public int noEqualsK(int[] nums,int i,int val){
    32         
    33         for(;i<nums.length;i++){
    34 
    35             if(nums[i]!=val){
    36                 
    37                 return i;
    38                 
    39             }
    40         }
    41         
    42         return nums.length;
    43     }
    44     
    45 }
  • 相关阅读:
    弹出框 popover.js
    模态框 modal.js
    关于css阴影和浮动
    css文件分类
    按钮效果
    二级导航栏
    在CSS3中,可以利用transform功能来实现文字或图像的旋转、缩放、倾斜、移动这四种类型的变形处理
    CSS3背景定位 background-origin
    什么是优雅降级和渐进增强
    居中
  • 原文地址:https://www.cnblogs.com/xuzhiyuan/p/7662670.html
Copyright © 2011-2022 走看看