php网站上传漏洞,网站首页面设计,北海做网站公司,苏州软件定制开发本专栏为c语言练习专栏#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新#xff0c;通过每天练习#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字#xff1a;自除数 除自身以外数组的乘积 #x1f493;博主csdn个人主页#xff… 本专栏为c语言练习专栏适合刚刚学完c语言的初学者。本专栏每天会不定时更新通过每天练习进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字自除数 除自身以外数组的乘积 博主csdn个人主页小小unicorn ⏩专栏分类C语言天天练 代码仓库小小unicorn的代码仓库 关注我带你学习编程知识 Day1 题目一题目描述解题思路代码实现结果情况 题目二题目描述解题思路代码实现结果情况 总结 题目一
题目描述 题目来源自除数 自除数 是指可以被它包含的每一位数整除的数。 例如128 是一个 自除数 因为 128 % 1 0 128 % 2 0128 % 8 0。 自除数 不允许包含 0 。 给定两个整数 left 和 right 返回一个列表列表的元素是范围 [left, right] 内所有的 自除数 。 解题思路
遍历范围 [left,right] 内的所有整数分别判断每个整数是否为自除数。
根据自除数的定义如果一个整数不包含 0 且能被它包含的每一位数整除则该整数是自除数。判断一个整数是否为自除数的方法是遍历整数的每一位判断每一位数是否为 0 以及是否可以整除该整数。
遍历整数的每一位的方法是每次将当前整数对 10取模即可得到当前整数的最后一位然后将整数除以 10。重复该操作直到当前整数变成 0 时即遍历了整数的每一位。
代码实现
bool isSelfDividing(int num)
{int temp num;while (temp 0) {int digit temp % 10;if (digit 0 || num % digit ! 0) {return false;}temp / 10;}return true;
}int* selfDividingNumbers(int left, int right, int* returnSize)
{int * ans (int *)malloc(sizeof(int) * (right - left 1));int pos 0;for (int i left; i right; i) {if (isSelfDividing(i)) {ans[pos] i;}}*returnSize pos;return ans;
}
结果情况 符合题目要求问题得到解决。
题目二
题目描述 题目来源除自身以外数组的乘积 给你一个整数数组 nums返回 数组 answer 其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请不要使用除法且在 O(n) 时间复杂度内完成此题。 解题思路 分成前缀和后缀然后相乘。 代码实现
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* productExceptSelf(int* nums, int numsSize, int* returnSize)
{int L[numsSize]; // 前缀的乘积int R[numsSize]; // 后缀的乘积// 前缀L[0] 1;for(int i 1; i numsSize; i){L[i] L[i - 1] * nums[i - 1];}// 后缀R[numsSize - 1] 1;for(int i numsSize - 2; i 0; i--){R[i] R[i 1] * nums[i 1];}int* answer (int*)malloc(sizeof(int) * numsSize);for(*returnSize 0; *returnSize numsSize; (*returnSize)){answer[*returnSize] L[*returnSize] * R[*returnSize];}return answer;
}
结果情况 符合题目要求问题得到解决。
总结 文章到这里就要告一段落了有更好的想法或问题欢迎评论区留言。 希望今天的练习能对您有所收获咱们下期见