zl程序教程

您现在的位置是:首页 >  后端

当前栏目

1748. 唯一元素的和-快速排序,加条件遍历

遍历排序 快速 元素 条件 唯一
2023-09-14 09:06:52 时间

1748. 唯一元素的和

给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。

请你返回 nums 中唯一元素的 和 。

示例 1:

输入:nums = [1,2,3,2]
输出:4
解释:唯一元素为 [1,3] ,和为 4 。

示例 2:

输入:nums = [1,1,1,1,1]
输出:0
解释:没有唯一元素,和为 0 。

示例 3 :

输入:nums = [1,2,3,4,5]
输出:15
解释:唯一元素为 [1,2,3,4,5] ,和为 15 。

void quick(int *a,int low,int high){
    if(low<high){
        int l=low,h=high,p=a[low];
        while(low<high){
            while(low<high&&a[high]>=p){
                high--;
            }
            a[low]=a[high];
            while(low<high&&a[low]<=p){
                low++;
            }
            a[high]=a[low];
        }
        a[low]=p;
         quick(a,l,low-1);
         quick(a,low+1,h);
    }
   
}

int sumOfUnique(int* nums, int numsSize){
    quick(nums,0,numsSize-1);
    int i;
    int sum=0;
    if(numsSize==1){
        return nums[0];
    }
    for(i=0;i<numsSize;i++){
        printf("%d ",nums[i]);
        if(i==0){
            if(nums[i]!=nums[1]){
                sum=sum+nums[i];
            }
            continue;
        }
        if(i==numsSize-1){
            if(nums[i]!=nums[i-1]){
                sum=sum+nums[i];
            }
            continue;
        }
        
        if(nums[i]!=nums[i-1]&&nums[i]!=nums[i+1]){
            sum=sum+nums[i];
        }
        
    }
return sum;
}