Leetcode之旅----------------入门:有序数组去重

1.Leetcode 有序数组去重,点击查看题目。
注:方法一和方法二能通过测试,方法三不能。
源代码如下:

package hello01.Leetcode.数组;


import java.util.*;

/**
 * @author created by Zhangdazhuang
 * @version v.0.1
 * @date 2018/9/7
 * @备注 地址:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/description/
 * 

* 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次, * ------返回移除后数组的新长度。---------- *

* 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 * 输入:nums = [1,1,2], 输出:2 * nums = [0,0,1,1,1,2,2,3,3,4], 输出 5 */ public class shuzu1 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int[] nums = {0, 0, 1, 1, 1, 2, 2, 3, 3, 4}; System.out.println("第一种方法:" + removeDuplicates1(nums)); System.out.println("第二种方法:" + removeDuplicates2(nums)); System.out.println("第三种方法:" + removeDuplicates3(nums)); } public static int removeDuplicates1(int[] array) { //数组统一用字母表示 //判断空和长度为0的情况 if (array == null || array.length == 0) return 0; int pre = 0, cur = 1; int pos = 1; //最后返回长度 //cur=1,pre=0 有序数组 //a[0]=1,a[1]=1,a[2]=2 while (cur < array.length) { //判断条件 cur从1到length-1 //cur:当前数组元素,pre下一数组元素 if (array[cur] != array[pre]) { //当前元素和前一元素不同时,将当前元素赋值给新数组元素 array[pos++] = array[cur]; } //每次比较相邻两个元素,发现不同就加一 pre++; // 0 1 cur++; // 1 2 } return pos; } public static int removeDuplicates2(int[] nums) { //1 1 2,返回2,数组前两个元素修改为1 2 int i, number = 0; for (i = 1; i < nums.length; i++) { if (nums[number] != nums[i]) { nums[++number] = nums[i]; } } return ++number; } public static int removeDuplicates3(int[] array) { //数组统一用字母表示 //判断空和长度为0的情况 if (array == null || array.length == 0) return 0; int count = 0; Set setarray = new HashSet<>(); for (int i = 0; i < array.length; i++) { setarray.add(array[i]); } int i = 0; Iterator it = setarray.iterator(); while (it.hasNext()) { array[i++] = (int) it.next(); } for (i = 0; i < array.length; i++) { System.out.println("改变以后的数组:" + array[i]); } //System.out.println("length:" + array.length); Arrays.sort(array); /* for (Integer newarray : setarray) { System.out.println("新set为:" + newarray); }*/ return setarray.size(); } }

以后会把自己的Leetcode之旅记录下来,争取拿下leetcode小Tshirt。

你可能感兴趣的:(编程之美)