力扣刷题详解(含代码动态展示)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣刷题详解(含代码动态展示)相关的知识,希望对你有一定的参考价值。
(文章目录)
一、448. 找到所有数组中消失的数字
1.完整过程动态展示
2.代码实现
int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize)
int* ptr = (int*)malloc(sizeof(int) * numsSize);
int index = 0;
int noindex = 0;
while (index < numsSize)
if (nums[index] == index + 1)//判断是否与下标+1相等
index++;
else
noindex = nums[index] - 1;
if (nums[noindex] == nums[index])//如果当前下标的数与
//与对应位置的数相等
index++;
continue;
int tmp = nums[noindex];//不相等就交换
nums[noindex] = nums[index];
nums[index] = tmp;
int i = 0;
int n = 0;
for (i = 0; i < numsSize; i++)
if (nums[i] != i + 1)
ptr[n] = i + 1;
n++;
*returnSize = n;
return ptr;
3.思路分析
二、238. 除自身以外数组的乘积
1.代码实现
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* productExceptSelf(int* nums, int numsSize, int* returnSize)
int i=0;
int*ptr=(int*)malloc(sizeof(int)*(numsSize));
int left[numsSize];
int right[numsSize];
left[0]=1;//默认左缀之和的第一个数为1
for(i=1;i<numsSize;i++)//左缀之和
left[i]=left[i-1]*nums[i-1];
right[numsSize-1]=1;//默认右缀之和的右边第一个数为1
for(i=numsSize-2;i>=0;i--)//右缀之和
right[i]=right[i+1]*nums[i+1];
int index=0;
for(i=0;i<numsSize;i++)//将左右缀之和相乘
ptr[index]=left[i]*right[i];
index++;
*returnSize=index;
return ptr;
2. 过程
以上是关于力扣刷题详解(含代码动态展示)的主要内容,如果未能解决你的问题,请参考以下文章