目录
存在重复元素
代码
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);
}