百度面试题--求绝对值最小的数
from: http://www.cnblogs.com/nokiaguy/archive/2013/01/29/2881476.html
有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现
例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。
原文用java写的,没看太懂,但很感谢博主的算法思路,即找正负数的临界值。于是我用C++实现了一遍,代码如下:
1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 int getMinNum(int arr[],int n) 5 { 6 int index=0; 7 int temp; 8 if(arr[index]>0) 9 return arr[index]; 10 else if(arr[index]<0&&arr[n-1]<0) 11 return abs(arr[n-1]); 12 else 13 { 14 for(int i=index;i<n;i++) 15 { 16 if(arr[i]<0) 17 continue; 18 else 19 { 20 temp=abs(arr[i-1]); 21 if(arr[i]<=temp) 22 temp=arr[i]; 23 return temp; 24 } 25 } 26 } 27 } 28 int main() 29 { 30 int arr[]={-20,-13,-4,6,77,200}; 31 int minNum; 32 minNum=getMinNum(arr,6); 33 cout<<"the abs min num is "<<minNum<<endl; 34 return 0; 35 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述