首先我要说暴力解是上帝给程序员的礼物————————————————
题目内容:给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。
解题过程:分析题目知道我们需要把数组中含0元素保持相对顺序移到数组末端,我们通过采取暴力法,现在内部循环依次遍历出数组元素,然后通过if条件判断是否是0,若是0则让它与后一位数组元素进行位置互换。这里会产生弊端,如果面对连续非0元素,只能使得一个0元素移到数组末端。为了解决这种情况我们采取在外层嵌套for循环,从而使得这种操作会重复多次,从而避免出现连续0元素的情况。但是还是建议大家采取双指针方法解答本题。
详细代码:
class Solution {
int temp;//创建变量做为中间值进行数值交换
public void moveZeroes(int[] nums) {
for(int j=0;j<nums.length;j++){ //外层for循环,来解决出现连续0元素的问题
for(int i=0;i<nums.length-1;i++) //通过内置for循环来使得数组中0元素移动到数组末端
{
if(nums[i]==0)//判断条件为后续执行操作做准备
{
nums[i]=temp;
nums[i]=nums[i+1];
nums[i+1]=temp; //使得非0元素前移0元素后移
}
}
}
}
}