首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从数组中删除双精度

从数组中删除双精度
EN

Stack Overflow用户
提问于 2014-08-21 10:15:43
回答 2查看 128关注 0票数 0

我刚刚开始编写LeetCode problmes。问题如下:给定一个排序的数组,去掉重复的元素,使每个元素只出现一次,并返回新的长度。

不要为另一个数组分配额外的空间,您必须使用常量内存在适当的位置执行此操作。

我的解决方案如下:

代码语言:javascript
运行
复制
public static int removeDuplicates1(int[] A) {
        Set<Integer> mySet = new HashSet<Integer>();

        for(Integer i: A){
            mySet.add(i);
        }
        return mySet.size();
    }

即使我在Eclipse中得到了正确的答案,我的答案也没有被网站接受。有人能告诉我哪里出了问题吗?

EN

回答 2

Stack Overflow用户

发布于 2014-08-21 16:36:13

如果数组已排序,则可以直接比较连续元素的重复项,直到找到不同的长度为止。循环完成后,可以使用数组长度属性返回新的长度。

显然,你必须在某些地方管理你的逻辑才能做到这一点。

票数 0
EN

Stack Overflow用户

发布于 2014-08-21 19:08:52

我试着用下面的逻辑来解决这个问题。但是它不是数组分配的地方。仍然不确定如何从具有就地逻辑的数组中删除null。

代码语言:javascript
运行
复制
 public static void main(String[] args) {

            Integer[] initArray = { 2, 3, 4, 4, 5, 6, 7, 8, 8, 9, 10, 11 };
            System.out.println("Initial Array : "+ Arrays.toString(initArray));

            System.out.println("Array Size After  Duplicates Removal : "+ removeDuplicates(initArray));
        }

    public static int removeDuplicates(Integer[] arr) {

        Integer prev = null;
        for(int index= 0; index <= arr.length -1;  index ++){
            if(arr[index] == prev)
            {
                remove(index, arr);
                prev = arr[index];
            }else{
                prev = arr[index];
                continue;
            }
        }

        List<Integer> items = new ArrayList<Integer>(arr.length);
        for(Integer input : arr) {
           if (input != null) {
              items.add(input);
           }
        }
        Integer[] outputs = items.toArray(new Integer[items.size()]);
        System.out.println("Final Array : "+ Arrays.toString(outputs));
        return outputs.length;
    }

    public static void remove(int index, Integer[] a){

        int lastIndex = a.length-1;
        if(index <= lastIndex){
            a[index] =null;
            int tmp = index;
            while(tmp < lastIndex){
                a[tmp] = a[tmp+1];
                a[tmp+1] = null;
                tmp++;
            }
            lastIndex--;
        } else {
            throw new ArrayIndexOutOfBoundsException();
        }

    } 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25417284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档