*First solution */ publicint(int[] nums){ int i = 0; for (int n : nums) if (i < 1 || n > nums[i-1]) nums[i++] = n; return i; }
*Second solution */ publicint(int[] nums){ int m = 0; for (int i = 0; i < nums.length;) { if (i < nums.length - 1 && nums[i] == nums[i + 1]) { int val = nums[i]; //记录当前值 nums[m++] = nums[i++]; //对数组进行1次操作 while (i < nums.length && nums[i] == val) //如果2个数之后的数据元素仍与之前相等就跳过 i++; } else nums[m++] = nums[i++]; //最后两个元素无所谓从不重复,直接复制就完事了 } return m; }
近期评论