一:238. 除自身以外数组的乘积
1.1题目
1.2思路
1.3代码
//左右乘表
int* productExceptSelf(int* nums, int numsSize, int* returnSize)
{
int* answer = (int*)malloc(numsSize*sizeof(int));
int i = 0;
int left[numsSize],right[numsSize];
left[0] = 1;
for(i = 1;i<numsSize;i++)
{
left[i] = (left[i-1]) * (nums[i-1]);
}
right[numsSize-1] = 1;
for(i = numsSize-2;i>=0;i--)
{
right[i] = (right[i+1]) * (nums[i+1]);
}
for(i =0;i<numsSize;i++)
answer[i] = left[i]*right[i];
*returnSize = numsSize;
return answer;
}
二:169. 多数元素
2.1题目
2.2思路
思路一:
思路二:
2.3代码
//摩尔投票法
//先假设数组中任意一个数就是众数,然后下一次i++时
//nums[i]=这个数,cont就++,如果不等于就--,如果cont为零,则下次这数就是nums[i]了
int majorityElement(int* nums, int numsSize)
{
int can = nums[0];
int s = 1;
for(int i = 1; i<numsSize;i++)
{
if(s == 0)
can = nums[i];
if(nums[i] == can)
s++;
else
s--;
}
return can;
}