gpt4 book ai didi

c# - 将数组中的所有非零元素拉到左侧 - C#

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:49 26 4
gpt4 key购买 nike

如果我有以下数组

{ 1, 0, 0, 1, 2, 0, 1 }

我想要一个方法来获取数组并将其更改为

{ 1, 1, 2, 1, 0, 0, 0 }

执行此操作的最佳算法是什么?是否可以在 O(N) 时间内完成?

这个问题基本上是我的确切问题,除了在 python 中而不是 c# 中,以防我不清楚:(唯一的区别是将零移到右边,而不是左边) how to move all non-zero elements in a python list or numpy array to one side?

谢谢

编辑:我遇到了另一个我一开始没有考虑的问题。我实际上试图在一个二维数组上运行这个算法,但只在一个特定的维度上。我将如何更改以解决这个问题?

最佳答案

这里有一种方法可以做到这一点。

var original = new int[] { 1, 0, 0, 1, 2, 0, 1 };
var nonZeroes = original.Where(x => x != 0); //enumerate once
var numberOfZeroes = original.Count() - nonZeroes.Count();
return nonZeroes.Concat(Enumerable.Repeat(0, numberOfZeroes)).ToArray();

关于c# - 将数组中的所有非零元素拉到左侧 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31547269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com