删除重复项

题目

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。
 

示例 1:

输入:nums = [1,2,3,1]
输出:true
示例 2:

输入:nums = [1,2,3,4]
输出:false
示例 3:

输入:nums = [1,1,1,3,3,4,3,2,4,2]
输出:true

思路

使用哈希表,将元素放入表中,存在不放入

代码

code

class Solution {
    public boolean containsDuplicate(int[] nums) {
    Set<Integer> set = new HashSet<Integer>();
        for (int x : nums) {
            if (!set.add(x)) {
                return true;
            }
        }
        return false;
    }
}

只出现一次的数字

题目

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

输入: [2,2,1]
输出: 1
示例 2:

输入: [4,1,2,1,2]
输出: 4

思路

依旧使用hashset

代码

code

class Solution {
    public int singleNumber(int[] nums) {
HashSet<Integer> set = new HashSet<>();
        for (int num:nums){
            if (!set.add(num)){
                set.remove(num);
            }
        }
        return (int)set.toArray()[0];
    }
}

END

有问题请联系feinan6666@outlook.com

本文作者:
文章标题:2022-2-28 力扣刷题记录
本文地址:https://home.cnboy.top/78.html
版权说明:若无注明,本文皆神码人の世界原创,转载请保留文章出处。
最后修改:2022 年 02 月 28 日 08 : 21 PM
如果觉得我的文章对你有用,请随意赞赏