实行效果:通过
实行用时和内存消耗如下:
- int findClosestNumber(int* nums, int numsSize) {
- int res = nums[0]; // 已遍历元素中绝对值最小且数值最大的元素
- int dis = abs(nums[0]); // 已遍历元素的最小绝对值
- for (int i = 0; i < numsSize; ++i) {
- if (abs(nums[i]) < dis) {
- dis = abs(nums[i]);
- res = nums[i];
- } else if (abs(nums[i]) == dis) {
- res = fmax(res, nums[i]);
- }
- }
- return res;
- }
复制代码 解题思绪:
- 初始化:
- res 变量被初始化为数组 nums 的第一个元素 nums[0]。这代表当前已遍历元素中绝对值最小且数值最大的元素。
- dis 变量被初始化为 nums[0] 的绝对值,表现当前已遍历元素中的最小绝对值。
- 遍历数组:
- 利用一个 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企服之家,中国第一个企服评测及商务社交产业平台。 |