Given an array of integers, every element appears?twice?except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
leetcode數組中查找數。
int compare(const void *a, const void *b)
{return (*(int*)a - *(int*)b);
}int singleNumber(int* nums, int numsSize) {int i = 0;qsort(nums, numsSize, sizeof(int), &compare);if(numsSize == 1)return nums[0];if(nums[0] != nums[1])return nums[0];for(i = 3; i < numsSize-1; i=i+2){if(nums[i] != nums[i-1])return nums[i-1];}return nums[numsSize-1];
}
運行時間12ms,其他人最快8ms
排序的時候其實就可以找出這個單數了,而上面的代碼使用了庫函數先排序,再循環查找,浪費了時間
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态