2.28 leetcode 删除排序数组中的重复项

my

import java.util.*;
class Tt {
	public static void main(String[] args)
    {
		//int[] nums = {1, 1, 2};
		int[] nums = {0,0,1,1,1,2,2,3,3,4};
		removeDuplicates(nums);
    }
/*
	public static void sop(Object obj)
    {
        System.out.println(obj);
    }
	*/

    public static int[] removeDuplicates(int[] nums) {
		//ArrayList<Integer> al = new ArrayList<Integer>();
		TreeSet<Integer> ts = new TreeSet<Integer>();
		int len = nums.length;
		for (int i = 0; i<len; i++ )
		{
			ts.add(nums[i]);
		}
		System.out.println(ts);
		int[] num = SetToInt(ts);
		return num;
	}

		private static int[] SetToInt(Set<Integer> allSet) {
		// 先将set集合转为Integer型数组
		Integer[] temp = allSet.toArray(new Integer[] {});//关键语句
 
		// 再将Integer型数组转为int型数组
		int[] intArray = new int[temp.length];
		for (int i = 0; i < temp.length; i++) {
			intArray[i] = temp[i].intValue();
		}
		return intArray;
	}


		/*
		Iterator it = ts.iterator();
		while(it.hasNext())
		{
			
		}

}

	




import java.util.*;


/*
去除ArrayList集合中的重复元素。


*/


class ArrayListTest
{


    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
    public static void main(String[] args)
    {
       

        al.add("java01");
        al.add("java02");
        al.add("java01");
        al.add("java02");
        al.add("java01");
//        al.add("java03");




        /*
        在迭代时循环中next调用一次,就要hasNext判断一次。
        Iterator it = al.iterator();


        while(it.hasNext())
        {
            sop(it.next()+"...."+it.next());
        }
        */


        /**/
        sop(al);
        
        al = singleElement(al);


        sop(al);
        


    }


    public static ArrayList singleElement(ArrayList al)
    {
        //定义一个临时容器。
        ArrayList newAl = new ArrayList();


        Iterator it = al.iterator();


        while(it.hasNext())
        {
            Object obj = it.next();


            if(!newAl.contains(obj))
                newAl.add(obj);


        }


        return newAl;
    }
}



定义两个指针

 public int removeDuplicates(int[] nums) {
    if(nums == null || nums.length == 0) return 0;
    int p = 0;
    int q = 1;
    while(q < nums.length){
        if(nums[p] != nums[q]){
            nums[p + 1] = nums[q];
            p++;
        }
        q++;
    }
    return p + 1;
}

猜你喜欢

转载自blog.csdn.net/qq_37602161/article/details/114240254