数学+其他
一些数学和其他类的面试高频算法
Java大数据运动猿
努力提升自己,记录学习过程。巩固自己,帮助他人!
展开
-
69. x 的平方根【101】
因为计算只涉及到整数,不涉及小数部分,所以可以利用二分查找的方法找出目标值。求x的平方根,那么这个值的取值范围一定在0-x之间,我们可以用mid中间值的平方来判断是否小于x,小于的话那就继续循环增加mid的值,大于的话就缩小mid的值,直到找到目标值位置。原创 2023-01-08 17:22:14 · 481 阅读 · 0 评论 -
剑指 Offer 64. 求1+2+…+n【2】
利用与运算的短路特性,所谓短路,比如 A && B,当A条件不成立时,不论B是否成立,结果都是false,所以B不再进行计算,利用短路特性可以实现递归停止,进而求出和。原创 2022-10-24 12:11:30 · 134 阅读 · 0 评论 -
剑指 Offer 62. 圆圈中最后剩下的数字【29】
递推公式: f[1]=0; f[i]=(f[i-1]+m)%i; (i>1)原创 2022-10-26 09:24:51 · 142 阅读 · 0 评论 -
剑指 Offer 61. 扑克牌中的顺子【19】
1、设置一个哈希表Set,借助它来执行判重操作,判断这 5 张牌是否存在重复牌,如果存在,那么肯定就不是顺子了。2、设置两个变量 Max、Min,用来记录这五张牌除了 0 之外的最大值和最小值。3、遇到大小王,忽略它。4、遇到非大小王的牌,检查哈希表是否存在这张牌,如果存在,那么肯定就不是顺子,直接返回false,否则将它加入到哈希表中,同时更新最大牌、最小牌的值。5、遍历完毕之后,判断 Max、Min 是否小于 5。原创 2022-10-26 10:23:44 · 323 阅读 · 0 评论 -
剑指 Offer 49. 丑数【2】
可以用空间换时间的方式,创建数组保存已经找到的丑数。根据丑数的定义,丑数应该是另一个丑数乘以2、3或者5的结果(1除外)。因此,我们可以创建一个数组,里面保存的是排好序的丑数,每一个丑数都可以由前面的丑数乘以2、3或者5得到。这个题用三个指针,第一个丑数是1,以后的丑数都是基于前面的小丑数分别乘2,3,5构成的。我们每次添加进去一个当前计算出来个三个丑数的最小的一个,并且是谁计算的,谁指针就后移一位。原创 2022-10-26 11:43:24 · 460 阅读 · 0 评论 -
剑指 Offer 44. 数字序列中某一位的数字【2】
1.序列前9位为单位数 9个数2.序列10-99为双位数 90*2=180个3.序列100-999为三位数 900*3=2700个数4.序列1000-9999为四位数 9000*4=3600个数比如要找第1001位数,可以这样计算:(1001-180-9=881)、881=270*3+1原创 2022-10-26 13:17:16 · 426 阅读 · 0 评论