我是靠谱客的博主 机灵冬瓜,最近开发中收集的这篇文章主要介绍给定一个数组,其中只有一个数出现一次,别的数都出现3次,找出这个数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述

给定一个数组,其中只有一个数x出现一次,别的数都出现3次,找出这个数x。(线性时间复杂度)

思路

这个用异或不可以。
可以设置一个长度为32的int数组。统计每位上出现1的次数,如果次数能被3整除,说明x该位上为0,否则为1

java代码实现

import java.util.Scanner;
public class AppearOnce3 {
public static void main(String[] args){
Scanner scan =
new Scanner(System.in);
String s = scan.nextLine();
String[] strArr = s.split(" ");
int len = strArr.length;
int[] nums = new int[len];
for(int i = 0; i < len; i++)
nums[i] = Integer.parseInt(strArr[i]);
System.out.println(appearOnce(nums));
}
public static int appearOnce(int[] nums){
int len = nums.length;
int[] bits = new int[32];
for(int i = 0 ; i < len; i++)
for(int j = 0; j < 32; j++)
bits[j] += ((nums[i]>>j)&1);
int result = 0;
for(int i = 0 ; i < 32; i++){
if(bits[i] % 3 == 1) result += 1 << i;
}
return result;
}
}

最后

以上就是机灵冬瓜为你收集整理的给定一个数组,其中只有一个数出现一次,别的数都出现3次,找出这个数的全部内容,希望文章能够帮你解决给定一个数组,其中只有一个数出现一次,别的数都出现3次,找出这个数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部