283. Move Zeroes

来源:互联网 发布:java中判断是星期几 编辑:程序博客网 时间:2024/06/07 05:41

题目:https://leetcode.com/problems/move-zeroes/

代码:

ArrayList只能用.get得到数据public class Solution {    public void moveZeroes(int[] nums) {        ArrayList<Integer> m = new ArrayList<Integer>();        for(int i : nums)            m.add(i);        int count = 0;        while(m.contains(0))        {            for(int i =0;i<m.size();i++)            {                if(m.get(i)==0)                {                    count++;                    m.remove(i);                    break;                }            }        }        for(int i =0;i<count;i++)            m.add(0);        for(int i=0;i<nums.length;i++)            nums[i] = m.get(i);    }}用另一种方法能够提升速度,但是还是耗时33ms!public class Solution {    public void moveZeroes(int[] nums) {        for(int i=0;i<nums.length;i++)        {            if(nums[i]==0)                exchange(nums,i);        }    }    public void exchange(int[] nums,int i)    {        for(int j=i;j<nums.length;j++)        {            if(nums[j]!=0)            {              nums[i] = nums[j];              nums[j] = 0;              break;            }        }    }}两点法1mspublic class Solution {public void moveZeroes(int[] nums) {    int temp;    for (int i = 0, j = 0; i < nums.length; ++i) {        if (nums[i] != 0) {            temp = nums[i];            nums[i] = nums[j];            nums[j] = temp;            j++;        }    }}
0 0