Javascript 为什么我的Move zero函数在leetcode中的答案是错误的?
我在leetcode工作 我写了一个函数来求解,但leetcode说这是一个错误的答案 有人能看出我的代码有什么问题吗 要求:原始数组必须经过变异 输入:[0,1,0,3,12] 输出:[1,3,12,0,0] 输入:[2,1] 输出:[1,2] 这是我的JS: var moveZeroes=functionnums{ var ZeroArray=[] forlet i=0;ia-b forlet j=0;j 将删除并丢弃当时num中第0个索引中存在的任何内容。如果num不是0,则可能更容易推送到其他数组,然后在末尾合并数组。无排序: var moveZeroes=functionnums{ var ZeroArray=[] var非零数组=[]; 对于let i=0;iJavascript 为什么我的Move zero函数在leetcode中的答案是错误的?,javascript,Javascript,我在leetcode工作 我写了一个函数来求解,但leetcode说这是一个错误的答案 有人能看出我的代码有什么问题吗 要求:原始数组必须经过变异 输入:[0,1,0,3,12] 输出:[1,3,12,0,0] 输入:[2,1] 输出:[1,2] 这是我的JS: var moveZeroes=functionnums{ var ZeroArray=[] forlet i=0;ia-b forlet j=0;j 将删除并丢弃当时num中第0个索引中存在的任何内容。如果num不是0,则可能更容易推送
对于var i=0;iArray.shift从数组中删除第一个元素,您很可能希望使用Array.i,1使用filter筛选所有非零元素,然后将剩余的数组大小附加为零
let arr = [0,1,0,3,12];
let filtered = arr.filter(item => item !== 0);
let result = [...filtered, ...(new Array(arr.length - filtered.length).fill(0))]
console.log(result);
可以采用单循环方法,在下一个索引中使用附加变量来交换值 根据规范要求,这种方法在现场工作 /** *@param{number[]}nums *@return{void}不返回任何内容,改为就地修改NUM。 */ var moveZeroes=functionnums{ var i,j=0; 对于i=0;i
console.logmoveZeroa;谢谢。但我更改了它并在leetcode中运行了代码,我的代码没有得到另一个输出。你能帮我解决吗?我已经编辑了这个问题。我在leetcode中运行了你的第一个代码,你的输出是错误的。这里是链接:你的问题没有说必须对原始数组进行变异。如果它确实需要变异的话,然后使用.sort。您应该发布问题中的所有要求。问题本身有什么缺陷?您可以发布一个输出不正确的示例输入吗?发布问题时,最好详细说明问题中的要求。如果您需要保留原始顺序,您可以迭代并拼接零,然后将其侧向推送您是否在这个答案中使用javascript?还是在leetcode中使用javascript?
let arr = [0,1,0,3,12];
let filtered = arr.filter(item => item !== 0);
let result = [...filtered, ...(new Array(arr.length - filtered.length).fill(0))]
console.log(result);
here is code to remove zeros in c++
void pushZerosToEnd(int arr[], int n)
{
int count = 0;
for (int i = 0; i < n; i++)
if (arr[i] != 0)
arr[count++] = arr[i];
while (count < n)
arr[count++] = 0;
}
int main()
{
int arr[] = {1, 9, 8, 4, 0, 0, 2, 7, 0, 6, 0, 9};
int n = sizeof(arr) / sizeof(arr[0]);
pushZerosToEnd(arr, n);
cout << "Array after pushing all zeros to end of array :n";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
return 0;
}