当前位置: 首页 > 面试题库 >

从数组中删除所有零

楚昊明
2023-03-14
问题内容

我有一个数组:

[0, 5, 6, 0, 0, 2, 5]

我想从中删除所有零,以便返回(保持相同的顺序):

[5, 6, 2, 5]

有什么比以下方法更简单的方法来删除所有零?

int[] array = {0, 5, 6, 0, 0, 2, 5};
        int len = 0;
        for (int i=0; i<array.length; i++){
            if (array[i] != 0)
                len++;
        }
        int [] newArray = new int[len];
        for (int i=0, j=0; i<array.length; i++){
            if (array[i] != 0) {
                newArray[j] = array[i];
                j++;
            }
        }

我无法在Arrays类中找到任何方法,并且Google / SO搜索没有给我任何好的答案。


问题答案:

这是在少数情况下,用代码显示比用普通英语解释更容易的情况之一:

int targetIndex = 0;
for( int sourceIndex = 0;  sourceIndex < array.length;  sourceIndex++ )
{
    if( array[sourceIndex] != 0 )
        array[targetIndex++] = array[sourceIndex];
}
int[] newArray = new int[targetIndex];
System.arraycopy( array, 0, newArray, 0, targetIndex );
return newArray;


 类似资料:
  • 问题内容: 我有一个字符数组,一次最多可以容纳50000个字符。该数组的内容通过套接字连接来。但是,不能保证此字符缓冲区不会有任何空元素。然后,我需要将此字符数组转换为字符串(例如,新的String(buffer);)。我的问题是,每当我从套接字收到的缓冲区长度不超过50000时,如何从此char数组或String中删除剩余的元素或空元素?如果没有,您建议的最有效方法是什么? / 这是当前的实现

  • 我有两个不同的数组,我想删除第二个数组中第一个数组元素的所有副本。我尝试了一些拼接和索引的方法,但没能实现。查看了一些其他帖子,但找不到我真正想要的。下面是一个示例代码。谢谢大家。

  • 问题内容: 我有100个表,每个表40,000行。我想进入MySQL并从 所有* 表中删除 所有 行。 * …如果可能的话,用1条陈述? 我想保留数据库和表。 问题答案: 我不这么认为(但以前我做错了)。我倾向于做的是那些情况,这是一个两步过程。 如果您的DBMS具有命令行界面,则可以使用它来创建脚本来完成大部分工作,例如: 第一位只是简单地创建一个文件(或Windows下的文件),该文件包含所拥

  • 问题内容: 这是我在角度控制器中创建的数组。 然后,我使用push方法将一些值插入到数组中: 这是插入后的数组值: 在插入之后,这里已经向数组添加了额外的东西,但是我需要从数组中删除它。 问题答案: 根据您需要将数组插入数据库的评论,我将假设您将其转换为JSON字符串,然后将其保存到数据库中。如果不正确,请告诉我,我将看看是否可以修改此答案。 在将数组转换为JSON时,有两个选项可用于修改数组。第

  • 问题内容: 我想从数组中的每个对象中删除该属性。有没有比使用循环并从每个对象中删除它更好的方法了? 似乎应该有一种使用方式,或其他方式。我不知道。有想法吗? 问题答案: 唯一的其他方法是修饰,实际上是循环。 例如 : 笔记: 如果要与IE8兼容,则需要forEach的垫片。正如您提到prototype一样,prototype.js也有一个shim。 是最糟糕的“优化杀手”之一。使用它经常会破坏应用

  • 我想从数组中的每个对象中删除属性。有没有比使用循环并从每个对象中删除它更好的方法? 似乎应该有一种方法来使用或其他东西。我不知道。想法?