leetcode第四天

今天开始系统学习算法,虽然我已经修过了数据结构和算法设计与分析,但是我认为我代码敲的还不够,从今天开始我会从数组链表起头,开始系统的学习锻炼算法思维!

今天的题目:移动0

题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

先记录我的傻瓜解法,以及其遇到的问题,我首先的想法是遍历数组,扫描到一个0就把后面的数据全部前移移位,覆盖掉这个0,然后数组最后一位赋值为0,但是遇到了错误,人工debug没有找到,通过编译器找出来了,还是自己代码敲少了,不够熟练;

 问题及解释:之所以要i--,是因为下一个数据前移到本位了,但是如果在末尾好几个0的情况下,就会陷入死循环

改良后:

 上面代码解释:通过sum来求和此0后面的数,判断后面是否全部为0,以此来判断是否i--,题目能解出来并且全部通过,但是效率则低的可怜。

 看了评论之后,我看到了一个我认为最优的解法:先把所有非0的数放到数组前面,然后此后的数全部赋值为0。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值