两数之和
链接: link
题目描述:
代码实现:
int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
int* arr= (int*)malloc(2*sizeof(int));//动态开辟2个整型内存空间存放返回值
int i = 0;
for(i=0;i<numsSize-1;i++)
{
int j = 0;
for(j=i+1;j<numsSize;j++)
{
if(nums[i]+nums[j]==target)
{
arr[0]=i;
arr[1]=j;
*returnSize = 2;
break;
}
}
}
return arr;
free(arr); //动态开辟的空间使用后要释放,指针置空
arr=NULL;
}
删除有序数组中的重复项
链接: link
题目描述:
代码实现:
int removeDuplicates(int* nums, int numsSize)
{
int fast = 1;
int slow = 1;
while(fast<numsSize)
{
if(nums[fast]!=nums[fast-1])
{
nums[slow++]=nums[fast];
}
fast++;
}
return slow;
}
基于排列构建数组
链接: link
题目描述:
代码实现:
int* buildArray(int* nums, int numsSize, int* returnSize)
{
int* ans=(int*)malloc(numsSize*sizeof(int));
int i = 0;
for(i=0;i<numsSize;i++)
{
ans[i]=nums[nums[i]];
}
*returnSize=numsSize;
return ans;
free(ans);
ans=NULL;
}
移除元素
链接: link
题目描述:
代码实现:
int removeElement(int* nums, int numsSize, int val)
{
int i = 0;
int pos = 0;
int count = 0;
for(i=0;i<numsSize;i++)
{
if(nums[i]!=val)
{
nums[pos++]=nums[i];
count++;
}
}
return count;
}
搜索插入位置
链接: link
题目描述:
代码实现:
int searchInsert(int* nums, int numsSize, int target)
{
int left = 0;
int right = numsSize-1;
while (left <= right)
{
int mid = (left + right)/2;
if (nums[mid] == target)
{
return mid;
}
else if (nums[mid] < target)
{
left = mid + 1;
}
else
{
right = mid - 1;
}
}
return left;
}