给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序
必须在原数组上操作,不能拷贝额外的数组
1)双指针+两个for循环(不是嵌套)
我們创建两个指针i和j,第一次遍历的时候指针i用来记录当前有多少非0元素即遍历的时候每遇到一个非0元素就将其往数组左边挪,第一次遍曆完后i指针的下标就指向了第一个为0元素。
第二次遍历的时候只要i小于数组长度,对应位置设为0
2)双指针+一次for循环,是1)的优化時间减少
在1)的基础上,在第一层循环里面加一个判断i!==j,为true,j对应的位置需要赋值为0
* 功能:数组中移动零到最后 * 方法:双指针两次循环(不是嵌套),一次将非0移到前面一次将后面设置为0 let i = 0;//i也是数组遍历指针,为新数组遍历指针,前期指向非0项后期才指向0项? * 功能:数組中移动零到最后 * 方法:双指针,一次循环时间优化,只要i!== jarr[j]赋值为0 let i = 0;//i也是数组遍历指针,为新数组遍历指针,前期指向非0项后期才指姠0项? if(i !== j){ //只要两者不相等,那么j对应的位置赋值为0只要有一个0,那么i和j永远不会再相等
如果有错请您指出!如有侵权,请联系我删除!