Leecode刷题C语言之找到最靠近0的数字
实行效果:通过实行用时和内存消耗如下:
https://i-blog.csdnimg.cn/direct/0ef8053c27974af2836799ef8c00b518.png
https://i-blog.csdnimg.cn/direct/a334a662580a4884b45a0dff983c8ca5.png
int findClosestNumber(int* nums, int numsSize) {
int res = nums; // 已遍历元素中绝对值最小且数值最大的元素
int dis = abs(nums); // 已遍历元素的最小绝对值
for (int i = 0; i < numsSize; ++i) {
if (abs(nums) < dis) {
dis = abs(nums);
res = nums;
} else if (abs(nums) == dis) {
res = fmax(res, nums);
}
}
return res;
}
解题思绪:
[*]初始化:
[*]res 变量被初始化为数组 nums 的第一个元素 nums。这代表当前已遍历元素中绝对值最小且数值最大的元素。
[*]dis 变量被初始化为 nums 的绝对值,表现当前已遍历元素中的最小绝对值。
[*]遍历数组:
[*]利用一个 for 循环遍历数组 nums,从索引 0 到 numsSize - 1。
[*]比力绝对值:
[*]在每次迭代中,检查当前元素 nums 的绝对值 abs(nums)。
[*]更新最小绝对值:
[*]假如 abs(nums) 小于当前记载的最小绝对值 dis,则更新 dis 为 abs(nums),并将 res 更新为当前元素 nums。这意味着找到了一个新的更小绝对值的元素。
[*]处置惩罚雷同绝对值的环境:
[*]假如 abs(nums) 等于当前记载的最小绝对值 dis,则利用 fmax(res, nums) 更新 res。这意味着在绝对值相等的环境下,选择数值较大的元素。fmax 函数返回两个数中较大的一个。
[*]返回效果:
[*]遍历完成后,返回 res。此时,res 存储的是数组 nums 中绝对值最小且数值最大的元素。
总结:
[*]该函数的主要目标是找到数组中绝对值最小且数值最大的元素。
[*]通过遍历数组,比力元素的绝对值,并在必要时更新最小绝对值和效果变量来实现这一目标。
[*]在绝对值雷同的环境下,选择数值较大的元素。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]