首页 > 其他分享 >【数组9】数组中只出现一次的数字

【数组9】数组中只出现一次的数字

时间:2022-11-22 12:01:11浏览次数:35  
标签:一次 数字 num2 nums int list firstIndexOfOne 数组 num1



题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。


更好的方法:


//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
import java.util.*;
public class Solution {
public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
if(array==null ||array.length<2)
return;

ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<array.length;i++){
if(!list.contains(array[i])){
list.add(array[i]);
}else{
list.remove(new Integer(array[i]));
}
}
if(list.size()>1){
num1[0]=list.get(0);
num2[0]=list.get(1);
}

}
}




//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
public class Solution {
public void FindNumsAppearOnce(int [] nums,int num1[] , int num2[]) {
if(nums==null ||nums.length<2)
return;
//1 对数组中数字依次异或,得到的最后结果即为两个只出现一次数字异或的结果
int result=0;
for(int i=0;i<nums.length;i++)
result^=nums[i];
int firstIndexOfOne=0 ;
while((result & 1)!=1 && firstIndexOfOne<32){
result=result>>1;
firstIndexOfOne++;

}
//2 根据这个位置的数是否为1将数组中的数分为两个数组

num1[0]=0;
num2[0]=0;
for(int i=0;i<nums.length;i++){
// nums[i]=nums[i]>>firstIndexOfOne;
if(isBitOne(nums[i],firstIndexOfOne) ) {
num1[0]^=nums[i];
}else{
num2[0]^=nums[i];
}

}

}
private boolean isBitOne(int num,int firstIndexOfOne){
num=num>>firstIndexOfOne;
return ((num & 1)==1)?true:false;
}

}



标签:一次,数字,num2,nums,int,list,firstIndexOfOne,数组,num1
From: https://blog.51cto.com/u_15886477/5877576

相关文章

  • 【字符串4】-第一个只出现一次的字符
    题目描述在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符,并返回它的位置importjava.util.Map;importjava.util.HashMap;publicc......
  • 【数组7】把数组排成最小的数
    题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323......
  • php中的array_unshift() 新增一个元素在数组开头 -- 简单实现
    array_unshiftarray_unshift()函数在数组开头插入一个或多个元素。被加上的元素作为一个整体添加,这些元素在数组中的顺序和在参数中的顺序一样。该函数会返回数组中元素......
  • PAT乙级 —— 1002 数字分类 (20)
    题目链接:​​数字分类(20)​​题目描述给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1=能被5整除的数字中所有偶数的和;A2=将被5除后余1的数字按给出顺......
  • 概率论 —— 随机变量的数字特征
    文章目录​​一、一维随机变量的数字特征​​​​1.数学期望​​​​(1)概念定义​​​​(2)说明​​​​(3)性质​​​​2.方差、标准差​​​​(1)概念​​​​(2)性质​​​​3.......
  • NumPy笔记(2)—— 使用数组进行面向数组编程
    参考:《利用python进行数据分析》第4章注意,由于本文是jupyter文档转换来的,代码不一定可以直接运行,有些注释是jupyter给出的交互结果,而非运行结果!!文章目录​​1.生成网格数......
  • 记一次自定义starter引发的线上事故复盘
    前言本文素材来源于业务部门技术负责人某次线上事故复盘分享。故事的背景是这样,该业务部门招了一个技术挺不错的小伙子小张,由于小张技术能力在该部门比较突出,在入职不久后......
  • 数组,对象解构
    数组解构varnames=["abc","cba",undefined,"nba","mba"]基本使用var[name1,name2,name3]=names顺序问题:严格的顺序var[name1,,nam......
  • C#中byte[]字节数组复制的常用方法
    简单总结了5种字节数组的复制方法for循环实现复制较为原始的遍历写法,不太推荐byte[]data=newbyte[]{0,1,2,3,4,5,6,7,8,9};byte[]data1=newbyte[data.length]......
  • 878. 第 N 个神奇数字 ----- 辗转相除求最大公因数、二分法查找指定值、逆向
    一个正整数如果能被a或b整除,那么它是神奇的。给定三个整数n, a,b,返回第n个神奇的数字。因为答案可能很大,所以返回答案 对 109 +7取模 后的值。 示例......