0
点赞
收藏
分享

微信扫一扫

力扣第一天题解

徐一村 2022-03-21 阅读 50
c++

目录

存在重复元素

代码

最大子数组和

代码

 两数之和

代码

合并两个有序数组

代码


存在重复元素

代码

int cmp(const void *a1,const void *a2)
{
    int *a=(int *)a1;
    int *b=(int *)a2;
    return *a-*b;
}
bool containsDuplicate(int* nums, int numsSize){
    qsort(nums,numsSize,sizeof(nums[0]),cmp);
    for(int i=0;i<numsSize-1;i++)
    {
        if(nums[i]==nums[i+1])
        {
            return true;
        }
    }
    return false;
}

最大子数组和

代码

int maxSubArray(int* nums, int numsSize){
    int max,sum;
    sum=max=nums[0];
    for(int i=1;i<numsSize;i++)
    {
        if(sum>0)
            sum+=nums[i];
        else
            sum=nums[i];
        if(sum>max)
            max=sum;
    }
    return max;
}

 两数之和

代码

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
    int i,j;
    int *result=NULL;
    *returnSize=2;
    for(i=0;i<numsSize-1;i++)
    {
        for(j=i+1;j<numsSize;j++)
        {
            if(nums[i]+nums[j]==target)
            {
                result=(int*)malloc(sizeof(int)*2);
                result[0]=i;
                result[1]=j;
                return result;
            }
        }
    }
    return result;
}

合并两个有序数组

代码

int cmp(const void* a1,const void *a2)
{
       int *a=(int *)a1;
       int *b=(int *)a2;
       return *a-*b;
}
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
       int i=0,j=0,len=m+n;
       for(i=m;i<m+n;i++)
       {
              nums1[i]=nums2[j];
              j++;
       }
       qsort(nums1,m+n,sizeof(nums1[0]),cmp);
}
举报

相关推荐

【第一天】

第一天

第一天复习

HCIP第一天

html第一天

Java第一天

第一天作业

出差第一天

javaSE第一天

0 条评论