talk is cheap ,show me your code!
c++解法:
思路:两个指针 i 和 j,一个快,一个慢。快指针i读取到非0值,就传到j指针指向的地方。这样i指针跑到结尾时,j就存完了最后一个非零的数了。然后把指针 j 以后的所有数字全部变为0就可以实现啦。
#include <iostream>
using namespace std;
int main() {
int arr[]={0,3,0,5,0,23,45,0,66};
int j = 0, len = 0;
len=sizeof(arr)/sizeof(int);
cout<<"len: "<<len<<endl;
for(int i=0;i<len; i++)
{
cout<<arr[i]<<",";
}
cout<<endl;
for(int i=0;i<len; i++)
{
if(arr[i] != 0)
{
arr[j++]= arr[i];
}
}
while(j<len)
{
arr[j++] = 0;
}
for(int i=0;i<len; i++)//
{
cout<<arr[i]<<",";
}
cout<<endl;
return 0;
}
运行结果:
len: 9
0,3,0,5,0,23,45,0,66,
3,5,23,45,66,0,0,0,0,
Python的解法:
# encoding: utf-8
if __name__ == "__main__":
l ,r,n=0,0,len(nums)
while r < n:
if nums[r] != 0 :
nums[l] = nums[r]
l += 1
r +=1
while l <n:
nums[l] = 0
l += 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)