leetcode数据结构学习

本文详细介绍了LeetCode中的一道编程题,即找出数组中只出现一次的数字。文章提供了两种解题方法:使用HashSet排除重复元素和利用位运算的异或性质。第一种方法利用HashSet的唯一性,遍历数组并移除重复项;第二种方法通过异或操作,所有相同的数字异或后结果为0,最终得到的异或结果即为只出现一次的数字。适合想要提升编程技能和理解位运算的读者阅读。
摘要由CSDN通过智能技术生成

文章目录


关于Leetcode中@只出现一次的数字做题详解TOC


前言

个人的话是一名在校大学生为了提高自己个人能力开始在力扣上学习


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素本题的话引自
作者:力扣 (LeetCode)
链接:https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x21ib6/
来源:力扣(LeetCode)

二、做题详解

1.

说明:以下代码是本人自己想到的思路,但是有些测试数据不能通过验证,因此尝试了新的解题思路

public static int SingleNUmber1(int nums[]){
          int num=nums[0];
          for(int num1:nums){
              if(num1==num){
                continue;

              }else{
                  num=num1;
              }

          }
          return num;
    }

2.新的解题思路

思路:HashSet集合来解决,接下来就来实现,接下来的话来谈一下这种解题思路,首先使用HashSet集合创建一个实例,之前也谈到过HashSet中是没有重复元素的,HashSet是基于HashMapl来实现的,允许有空值,是无序的,既不会记录插入的顺序;HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。然后用到for-each遍历一个数组,在循环中进行判断,如果发现遍历的值不能添加到set集合中就将该值移除利用remove方法,最后返回数组的值即可

public static 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];


    }

总结

以上就是今天要讲的内容,后续还会继续分享新的内容。关于本文的第二种思路但是这题的话还可以用以下思路来做,但是这道题中所考查的是数组和位运算,很显然的是这里用到是异或运算,有了解题思路的话,接下来我们就来具体实现一下吧;在最开始写的时候还是出现了一些问题,这里的话也先来写一下吧 因为没有具体了解异或运算不了解的朋友也可以先停一下如果a^a=0 a^0=a;简单的说就是相异为真,相同为假 下面展示一些 `内联代码片`。
public static int SingeN(int nums[]){
        int temp=0;
        for(int num:nums){
            temp=temp^num;
        }
        return temp;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AimerGosick

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值