标签:numsSize arr OK nums int 56 low pivot leetcode
// language c
// 剑指56-I
// https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/
// 通过了,但是肯定能优化,需要用到亦或,不太懂
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
// 排序是nlogn不太符合,但是好先试试吧
int* singleNumbers(int* nums, int numsSize, int* returnSize){
returnSize[0] = 2;
int partition(int arr[],int low, int high){
int pivot = arr[low];
while (low <high){
while(low <high && arr[high] >=pivot) high--;
arr[low] = arr[high];
while(low <high && arr[low] <= pivot) low++;
arr[high] = arr[low];
}
arr[low] = pivot;
return low;
}
void quick_sort_inside(int arr[], int start, int end){
int pivot = partition(arr,start,end);
if (start < pivot-1) quick_sort_inside(arr, start, pivot-1);
if (end > pivot+1) quick_sort_inside(arr, pivot+1, end);
}
quick_sort_inside(nums,0,numsSize-1);
int a;
int b;
bool a_found =false,done = false;
void fill(int m){
if(a_found){
b = m;
done = true;
}else{
a = m;
a_found = true;
}
if(nums[0]<nums[1])
fill(nums[0]);
if(nums[numsSize-1]>nums[numsSize-2]){
fill(nums[numsSize-1])
if(done){
nums[0] = a;
nums[1] = b;
return nums;
}
}
for(int i=1; i<numsSize-1;i++){
if((nums[i]>nums[i-1])&&(nums[i]<nums[i+1])){
fill(nums[i])
if(done){
nums[0] = a;
nums[1] = b;
return nums;
}
}
}
return nums;
}
标签:numsSize,arr,OK,nums,int,56,low,pivot,leetcode 来源: https://www.cnblogs.com/gallien/p/14337911.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。