
Java岗大厂面试百日冲刺【Day33】—— 手撸算法2
AI-摘要
新 · 都在 GPT
生成中. . .
介绍自己
生成本文简介
推荐相关文章
前往主页
Java岗大厂面试百日冲刺【Day33】—— 手撸算法2
本文已获得原作者 _陈哈哈 授权并经过重新整理规划后发布。
本栏目Java开发岗高频面试题主要出自以下各技术栈:Java基础知识、集合容器、并发编程、JVM、Spring全家桶、MyBatis等ORMapping框架、MySQL数据库、Redis缓存、RabbitMQ消息队列、Linux操作技巧等。
要进大厂,算法是不可或缺的一环,也是块儿敲门砖,科一都不愿意背还想考驾照?多的不保证,力扣或牛客网的剑指offer(免费)困难以下都刷一遍,至少有个印象。别说的有模有样,一到手写个题就栽了。唉,不能想,往事令我难受的一批。
手撸算法1:查找数组中重复元素和重复元素的个数
这个问题用的是数组,两层循环比较或Map都可以解决,比较简单,但是常问.方式如下:
1. 两层循环比较方式
打印结果:
2. 转成Map集合处理方式
打印结果:
手撸算法2:写个二分查找demo吧
二分查找的条件是对一组有序数组的查找,所以要先确定查找的数组是否有序,在使用二分查找的时候先要对数组进行排序。
加个排序多麻烦?所以面试官不指定无序数组时,就都当有序的就行。无序你用什么二分法是吧?
二分算法步骤
1.首先确定整个查找区间的中间位置mid = ( left + right )/ 2
2.用待查关键字值与中间位置的关键字值进行比较;
- 若相等,则查找成功
- 若大于,则在后(右)半个区域继续进行折半查找
- 若小于,则在前(左)半个区域继续进行折半查找
3.对确定的缩小区域再按折半公式,重复上述步骤,使用递归或普通while循环都可以。
这里我们对给定数列(有序){ 1, 20, 23, 24, 35, 46, 77, 78, 99, 100}
,通过二分法查找值为78的数据元素。
手撸算法3:把两个有序数组合并成一个有序数组
对于两个有序数组arrayM,arrayN,数组长度分别为m和n;
思路:
- 定义一个新数组newArray,长度为m+n;
- 定义两个index(int),如:int start=0,end=0,用来记录数组arrayM、arrayN的下标;
- 通过分别遍历数组arrayM和arrayN的方式来比较每个值的大小,并将值存放到newArray中;
- 判断start和end是否分别小于m和n,如果小于则继续执行,否则则表示有一个array遍历结束,然后将另一个array剩余部分追加到newArray中即可;
结果打印:
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Carol 小屋
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果