Leetcode_16

来源:互联网 发布:java全栈开发工程师 编辑:程序博客网 时间:2024/03/29 09:08


void quicksort(int* nums,int low,int high);int partition(int* nums,int low,int high);int threeSumClosest(int* nums, int numsSize, int target) {    if(numsSize == 0)        return 0;    if(numsSize == 1)        return nums[0];    if(numsSize == 2)         return nums[0] + nums[1];    if(numsSize == 3)        return nums[0] + nums[1] + nums[2];    quicksort(nums,0,numsSize-1);    int ans = nums[0] + nums[1] + nums[2];    int i;    for(i = 0;i < numsSize-2;++i){        int j = i + 1;        int k = numsSize - 1;        while(j < k){            int sum = nums[i] + nums[j] + nums[k];            if(abs(target - ans) > abs(target - sum)){                ans = sum;                if(ans == target)                    return ans;            }            if(sum > target){                k--;            }            else{                j++;            }        }    }    return ans;}void quicksort(int* nums,int low,int high){    int p;    if(low < high){        p = partition(nums,low,high);        quicksort(nums,low,p-1);        quicksort(nums,p+1,high);    }}int partition(int* nums,int low,int high){    int i=low;    int j=high;    int p=nums[low];    j++;    while(1){        while(p > nums[++i]){            if(i > high){                break;            }        }        while(p < nums[--j]){            if(j < low){                break;            }        }        if(i>=j){            break;        }        nums[i] = nums[i] + nums[j];        nums[j] = nums[i] - nums[j];        nums[i] = nums[i] - nums[j];    }    if(low!=j){        nums[low] = nums[low] + nums[j];        nums[j] = nums[low] - nums[j];        nums[low] = nums[low] - nums[j];    }    return j;}


0 0
原创粉丝点击