- 4
- 0
- 约2.26万字
- 约 39页
- 2025-10-02 发布于广东
- 举报
算法工程师面试题(某大型央企)精练试题精析
面试问答题(共20题)
第一题
假设你需要设计一个算法来判断一个自然数N是否为完全平方数。请描述你的思路,并给出相应的算法伪代码。
答案:
思路描述:
判断一个自然数N是否为完全平方数,即判断是否存在一个整数x,使得x*x=N。常见的思路有以下几种:
暴力枚举法:
从0开始,逐一尝试计算ii,直到iiN。
如果在某一步i*i恰好等于N,则N是完全平方数。
如果枚举结束都没有找到,则N不是完全平方数。
缺点:时间复杂度较高,为O(sqrt(N))。
二分查找法(更优):
完全平方数的定义意味着其平方根应位于[0,N]的范围内。可以对这个范围进行二分查找。
初始化low=0,high=N(或者更精确的high=sqrt(N))。
在while(low=high)循环中:
计算mid=floor((low+high)/2)。
计算mid*mid:
如果mid*mid==N,则N是完全平方数,返回true。
如果mid*midN,则平方根一定在mid的右侧,令low=mid+1。
如果mid*midN,则平方根一定在mid的左侧,令high=mid-1。
如果循环结束(lowhigh),则说明没
原创力文档

文档评论(0)