260.只出现一次的数字 III

2024-06-06 04:58
文章标签 iii 一次 数字 260

本文主要是介绍260.只出现一次的数字 III,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

260.只出现一次的数字 III

解题思路:

利用异或规则:相同数字异或结果为0,一个数字与0异或结果不变

package leadcode;import java.util.Arrays;/*** @author : icehill* @description : 只出现一次的数字III* 给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。* 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。* 进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?* 示例 1:* 输入:nums = [1,2,1,3,2,5]* 输出:[3,5]* 解释:[5, 3] 也是有效的答案。* 示例 2:* 输入:nums = [-1,0]* 输出:[-1,0]* 示例 3:* 输入:nums = [0,1]* 输出:[1,0]* 提示:* 2 <= nums.length <= 3 * 10^4* -2^31 <= nums[i] <= 2^31 - 1* 除两个只出现一次的整数外,nums 中的其他数字都出现两次* 来源:力扣(LeetCode)* 链接:https://leetcode-cn.com/problems/single-number-iii* 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。* 解题思路:* 这道题有点像脑筋急转弯,说难也不难,我们需要利用异或的特性之一,相同数字异或为0* 如果是只有一个数字出现一次的数组,则全部异或即可得到,现在是两个,如果我们进行分组,就可以解决* 分组的条件需要满足:* 1.这两个元素:a、b分在不同组* 2.相同元素分在同个组* 分组过程:把所有元素进行异或,最终得到的是:a^b* 要把a、b分组,只需要根据某个位是否为1或者0,就肯定可以确定ab不在同个组,* 至于其他元素相同元素该位置肯定也是相同的,所以这样分组是没问题的* @date : 2021-05-27*/
public class Solution260 {public static void main(String[] args) {int[] nums = {1, 2, 1, 3, 2, 5};int[] nums2 = {-1, 0};Solution260 solution260 = new Solution260();System.out.println(Arrays.toString(solution260.singleNumber(nums)));System.out.println(Arrays.toString(solution260.singleNumber(nums2)));}public int[] singleNumber(int[] nums) {int res = 0;for (int i = 0; i < nums.length; i++) {res ^= nums[i];}int single = 1;while ((single & res) == 0) {single <<= 1;}int a = 0, b = 0;for (int i = 0; i < nums.length; i++) {if ((nums[i] & single) == single) {a ^= nums[i];} else {b ^= nums[i];}}return new int[]{a, b};}
}

这篇关于260.只出现一次的数字 III的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1035149

相关文章

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

电脑多久清理一次灰尘合? 合理清理电脑上灰尘的科普文

《电脑多久清理一次灰尘合?合理清理电脑上灰尘的科普文》聊起电脑清理灰尘这个话题,我可有不少话要说,你知道吗,电脑就像个勤劳的工人,每天不停地为我们服务,但时间一长,它也会“出汗”——也就是积累灰尘,... 灰尘的堆积几乎是所有电脑用户面临的问题。无论你的房间有多干净,或者你的电脑是否安装了灰尘过滤器,灰尘都

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

AIGC6: 走进腾讯数字盛会

图中是一个程序员,去参加一个技术盛会。AI大潮下,五颜六色,各种不确定。 背景 AI对各行各业的冲击越来越大,身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为: 为国际跨境公司提供不同地区不同语言的客服外包解决方案,除了人力,还有软件系统。 软件系统主要是提供了客服跟客人的渠道沟通和工单管理,内部管理跟甲方的合同对接,绩效评估,BI数据透视。 客服跟客人

(function() {})();只执行一次

测试例子: var xx = (function() {     (function() { alert(9) })(); alert(10)     return "yyyy";  })(); 调用: alert(xx); 在调用的时候,你会发现只弹出"yyyy"信息,并不见弹出"10"的信息!这也就是说,这个匿名函数只在立即调用的时候执行一次,这时它已经赋予了给xx变量,也就是只是

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位 一、背景二、定位问题三、解决方法 一、背景 flume系列之:定位flume没有关闭某个时间点生成的tmp文件的原因,并制定解决方案在博主上面这篇文章的基础上,在机器内存、cpu资源、flume agent资源都足够的情况下,flume agent又出现了tmp文件无法关闭的情况 二、

NC 把数字翻译成字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。 现在给一串数字,返回有多少种可能的译码结果 import java.u

34465A-61/2 数字万用表(六位半)

34465A-61/2 数字万用表(六位半) 文章目录 34465A-61/2 数字万用表(六位半)前言一、测DC/AC电压二、测DC/AC电流四、测电阻五、测电容六、测二极管七、保存截图流程 前言 1、6位半数字万用表通常具有200,000个计数器,可以显示最大为199999的数值。相比普通数字万用表,6位半万用表具有更高的测量分辨率和更高的测量准确度,适用于精度比较高的测

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html