输入包含两行,第一行一个整数n,代表数组arr的长度,第二行n个整数,代表数组arr,arr[i]为32位整数。
输出出现奇数次的两个数,按照从小到大的顺序。
4 1 1 2 3
2 3
6 11 22 11 23 23 45
22 45
时间复杂度,额外空间复杂度
。
import java.util.Scanner;
import java.util.Arrays;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++){
arr[i]=sc.nextInt();
}
Arrays.sort(arr);
for(int i=0;i<n-1;){
if(arr[i]!=arr[i+1]){
System.out.print(arr[i]+" ");
break;
}
i=i+2;
}
for(int i=n-1;i>1;){
if(arr[i]!=arr[i-1]){
System.out.print(arr[i]);
break;
}
i=i-2;
}
}
} import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()){
int n = in.nextInt();
int[]num = new int[n];
int[]num1 = new int[2];
Map<Integer,Integer> map = new HashMap<>();
for (int i = 0; i < n ; i++) {
num[i] = in.nextInt();
}
for (int j = 0; j < n ; j++) {
if(map.containsKey(num[j])){
map.put(num[j],map.get(num[j])+1);
}else {
map.put(num[j],1);
}
}
int k =0;
for (Integer key:map.keySet()) {
if(map.get(key)%2!=0){
num1[k] = key;
k++;
}
}
Arrays.sort(num1);
String a ="";
a =num1[0]+" "+num1[1];
System.out.println(a);
}
}
} import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int array[] = new int[n];
for(int i = 0; i<n; i++){
array[i] = sc.nextInt();
}
int ret = 0;
for(int x:array){
ret^=x;
}
int i = 0;
for(;i<32;i++){
if((ret&(1<<i))==1)
break;
}
int a = 0; int b = 0;
for(int x:array){
if((x&(1<<i))==1){
a^=x;
}else{
b^=x;
}
}
if(a<b){
System.out.println(a+" "+b);
}else{
System.out.println(b+" "+a);
}
}
}
import java.util.*;
public class Main2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
int retExclusive = 0;
for (int i = 0; i <n ; i++) {
retExclusive^=arr[i];
}
int index = findIndex(retExclusive);
int num1 = 0;
int num2 = 0;
for (int i = 0; i <n ; i++) {
if (judgeIndex(arr[i],index)){
num1^=arr[i];
}else{
num2^=arr[i];
}
}
if (num1<num2){
System.out.println(num1+" "+num2);
}else{
System.out.println(num2+ " " + num1);
}
}
}
public static int findIndex(int num){
//在整数num中找到最右边是1的位置
int index = 0;
while ((num&1)==0){
num>>=1;
index++;
}
return index;
}
public static boolean judgeIndex(int num,int index){
//判断整数num右边第num位是否为1
num>>=index;
return ((num&1)==1);
}
}
import java.util.Scanner;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
//这块不是很懂,使用nextInt接收个数时,还未输入具体数字 nextLine后面的代码也会执行
String s=sc.nextLine();
String s1=sc.nextLine();
String[] ss=s1.split(" ");
Map<String,Integer> mm=new HashMap<String,Integer>();
for(int i=0;i<ss.length;i++){
//偶数最终将不在map中
if(mm.containsKey(ss[i])){
mm.remove(ss[i]);
}else{
mm.put(ss[i],1);
}
}
Set<Entry<String,Integer>> es=mm.entrySet();
int [] arr=new int[2];
for(Map.Entry<String,Integer> en:es){
if(arr[0]==0){
arr[0]=Integer.parseInt(en.getKey());
}else{
arr[1]=Integer.parseInt(en.getKey());
}
}
if(arr[0]>arr[1]){
arr[0]=arr[0]^arr[1];
arr[1]=arr[0]^arr[1];
arr[0]=arr[0]^arr[1];
}
System.out.println(arr[0]+" "+arr[1]);
}
}
}