
**关于LeetCode第26题的题解看到这题的第一想法就是不重复那不就可以用到set的自动去重因此直接选择遍历一遍数组之后将数组加到set中再将set转换为integer数组 之后由于题中数组是int类型那么再将integer数组转换为int数组最后将int数组排序后直接塞回题中数组则直接满足题目中要求的前n个数字替换并且不删除后续数字返回set的长度即可。**classSolution{publicintremoveDuplicates(int[]nums){SetIntegersetnewHashSet();for(inti0;inums.length;i){set.add(nums[i]);}Integer[]nums1set.toArray(newInteger[0]);int[]resultnewint[nums1.length];for(inti0;inums1.length;i){result[i]nums1[i];}Arrays.sort(result);for(inti0;inums1.length;i){nums[i]result[i];}returnset.size();}}当然这是我第一时间上想到的解法在思考之后该解法还能优化为LinkedHashMap则能够自动保持有序插入classSolution{publicintremoveDuplicates(int[]nums){SetIntegersetnewLinkedHashSet();for(intnum:nums)set.add(num);inti0;for(intnum:set){nums[i]num;}returnset.size();}}并且可以使用双指针法这是力扣官方解法classSolution{publicintremoveDuplicates(int[]nums){if(nums.length0)return0;intslow0;for(intfast1;fastnums.length;fast){if(nums[fast]!nums[slow]){slow;nums[slow]nums[fast];}}returnslow1;}}