前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode45|数组中重复的数据

LeetCode45|数组中重复的数据

作者头像
码农王同学
发布2020-08-25 11:26:59
7880
发布2020-08-25 11:26:59
举报
文章被收录于专栏:后端Coder后端Coder

1,问题简述

给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。

找到所有出现两次的元素。

你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?

2,示例

代码语言:javascript
复制
输入:
[4,3,2,7,8,2,3,1]

输出:
[2,3]

3,题解思路

数组的使用

4,题解程序

代码语言:javascript
复制
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class FindDuplicatesTest {
    public static void main(String[] args) {
        int[] nums = {4, 3, 2, 7, 8, 2, 3, 1};
        List<Integer> integerList = findDuplicates(nums);
        System.out.println("integerList = " + integerList);
    }

    public static List<Integer> findDuplicates(int[] nums) {
        List<Integer> list = new ArrayList<>();
        if (nums == null || nums.length == 0) {
            return list;

        }
        int maxValue = Arrays.stream(nums).max().getAsInt();
        int[] array = new int[maxValue + 1];
        for (int num : nums) {
            array[num]++;
        }
        for (int i = 0, length = array.length; i < length; i++) {
            if (array[i] == 2) {
                list.add(i);
            }
        }

        return list;
    }
}

5,题解程序图片版

6,总结

数组的特点就是访问快,数组空间不可动态扩容,访问快在于根据数组下标进行确定元素的位置,相比较于链表获取数组元素的时间复杂度在O(1),链表由于节点的关系,查找某个元素的时间复杂度为O(n)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农王同学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档