除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请不要使用除法,且在 O(n) 时间复杂度内完成此题 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/product-of-array-except-self 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:这里我就不说了,看看题目链接里的解题思路,因为,解题视频比我在这里咔咔敲 半天效率高太多了,好太多了 然后我用c语言直接实现进阶解法就好了
int* productExceptSelf(int* nums, int numsSize, int* returnSize)
{
int i=0,k=0,ret=1;
static int arr[100000];
for(i=0;i<numsSize;i++)
{
if(i==0)
{
ret=ret*nums[i];
arr[k++]=1;
}
else
{
arr[k++]=ret;
ret=ret*nums[i];
}
}
k=numsSize-1;
ret=1;
for(i=k;i>=0;i--)
{
if(i==numsSize-1)
{
arr[k--]=arr[k];
ret=nums[i];
}
else
{
arr[k--]=arr[k]*ret;
ret=ret*nums[i];
}
}
*returnSize=numsSize;
return arr;
}
不用加减乘除做加法
题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
题目链接:https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215?tpId=13&tqId=23249&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
解题思路: 代码
int Add(int num1, int num2 )
{
int tmp=0;
while(num2)
{
tmp=num1^num2;
num2=(num1&num2)<<1;
num1=tmp;
}
return num1;
}
找到所有数组中消失的数字
题目描述:给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:使用映射法,下标位置与数组元素值相等 i==nums[i];
int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize)
{
int arr1[100001]={0};
static arr2[100000]={0};
int i=0,k=0;
for(i=0;i<numsSize;i++)
{
arr1[nums[i]]=nums[i];
}
for(i=1;i<=numsSize;i++)
{
if(arr1[i]==0)
{
arr2[k++]=i;
}
}
*returnSize=k;
return arr2;
}
|