打印数组中只出现了一次的数字

法一:

#include <stdio.h>
#include <stdlib.h>

//打印数组中只出现了一次的数字
int Func(int arr[], int size){
 int numCount[100] = { 0 };
 for (int i = 0; i < size; i++){
  numCount[arr[i]]++;
 }
 for (int i = 0; i < 100; i++){
  if (numCount[i] == 1){
   return numCount[i];
  }
 }
 return 0;
}

int main(){

 int arr[5] = { 1, 2, 3, 1, 2 };
 int n = Func(arr, 5);
 printf("%d\n", n);
 system("pause");
 return 0;
}

法二:按位异或

#include <stdio.h>
#include <stdlib.h>

//打印数组中只出现一次的数字
int Func(int arr[], int size){
 int ret = 0;
 for (int i = 0; i < size; i++){
  ret ^= arr[i];  //按位异或
 }
 return ret;
}

int main(){

 int arr[5] = { 1, 2, 3, 1, 2 };
 int n = Func(arr, 5);
 printf("%d\n", n);
 system("pause");
 return 0;
}

posted @ 2020-04-03 15:35  听说在北郭  阅读(264)  评论(0)    收藏  举报