问题描述:
给定一个排序数组,你需要在删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 o(1) 额外空间的条件下完成。
问题分析:
不能使用额外的空间,只能在原数组上操作,因为该数组是已排序的,如果存在重复的元素,则这些元素的位置必定是相邻的,
所以可以将前一个元素的值与后一个元素的值作比较,值不相等时,表明这两个元素是移除后的数组元素。
java 实现:
class solution { public int removeduplicates(int[] nums) { int j=nums.length; if(j==1){ return j; } int k=1;//数组长度 for(int i=1;i<j;i++){ if(nums[i-1]!=nums[i]){ nums[k]=nums[i];//除去nums[0],将新数组元素赋值给nums[k],组成移除重复元素后的数组 k++; } } return k; } }
如对本文有疑问, 点击进行留言回复!!
第三次学JAVA再学不好就吃翔(part88)--ArrayList嵌套ArrayList
使用ffmpeg视频切片并加密和视频AES-128加密后播放
JAVA程序设计:最长重复子串(LeetCode:1044)
LiveGBS国标GB/T28181云端录像分布式录像存储自动清理时移回看录像下载播放
网友评论