【每日算法Day 83】邻居小孩一年级就会的乘法表,你会吗?

简介: LeetCode 668. 乘法表中第k小的数

题目链接


LeetCode 668. 乘法表中第k小的数[1]

题目描述



image.png

示例1

输入:m = 3, n = 3, k = 5输出:3解释:乘法表:1  2 32  4 63  6 9第5小的数字是 3 (1, 2, 2, 3, 3).

示例2


输入:m = 2, n = 3, k = 6输出:6解释:乘法表:1  2 32  4 6第6小的数字是 6 (1, 2, 2, 3, 4, 6).

说明:

image.png

题解


二分法



image.png

二分法+优化



image.png


二分法(c++)

classSolution {
public:   
intfindKthNumber(intm, intn, intk) {   
intl=1, r=m*n;     
while (l<r) {     
intmid=l+((r-l)>>1);      
if (enough(mid, m, n, k)) r=mid; 
elsel=mid+1;    
        }     
returnl;  
    }
boolenough(intx, intm, intn, intk) {  
intcnt=0;   
for (inti=1; i<=m; ++i) {   
cnt+=x/i<n?x/i:n;     
        }    
returncnt>=k; 
    }
};

二分法+优化(c++)

classSolution {
public:   
intfindKthNumber(intm, intn, intk) { 
intl=1, r=k;    
while (l<r) {  
intmid=l+((r-l)>>1);    
if (enough(mid, m<mid?m:mid, n<mid?n:mid, k)) r=mid;            elsel=mid+1;   
        }      
returnl; 
    }
boolenough(intx, intm, intn, intk) { 
intcnt=n*(x/n), d=0; 
for (inti= (x/n)+1; i<=m; i=d+1) { 
d=x/(x/i);    
cnt+= (x/i)*((d<m?d:m)-i+1);   
        }     
returncnt>=k;  
    }
};

二分法(python)

classSolution:
deffindKthNumber(self, m: int, n: int, k: int) ->int:  
defenough(x, m, n, k):    
cnt=0foriinrange(1, m+1):     
cnt+=x//iifx//i<nelsenreturncnt>=kl, r=1, m*nwhilel<r:    
mid=l+((r-l)>>1)    
ifenough(mid, m, n, k): r=midelse: l=mid+1returnl

二分法+优化(python)

classSolution: 
deffindKthNumber(self, m: int, n: int, k: int) ->int:  
defenough(x, m, n, k):   
cnt, i, d=n*(x//n), x//n+1, 0whilei<=m:   
d=x//(x//i)     
cnt+= (x//i)*((difd<melsem)-i+1)    
i=d+1returncnt>=kl, r=1, kwhilel<r:  
mid=l+((r-l)>>1)   
ifenough(mid, mifm<midelsemid, nifn<midelsemid,
k): r=midelse: l=mid+1returnl

参考资料

[1]

LeetCode 668. 乘法表中第k小的数: https://leetcode-cn.com/problems/kth-smallest-number-in-multiplication-table/

image.png

作者简介:godweiyang知乎同名华东师范大学计算机系硕士在读,方向自然语言处理与深度学习喜欢与人分享技术与知识,期待与你的进一步交流~


相关文章
|
12月前
|
算法 C++ Python
【每日算法Day 83】邻居小孩一年级就会的乘法表,你会吗?
【每日算法Day 83】邻居小孩一年级就会的乘法表,你会吗?
|
3天前
|
算法 数据安全/隐私保护 计算机视觉
基于二维CS-SCHT变换和LABS方法的水印嵌入和提取算法matlab仿真
该内容包括一个算法的运行展示和详细步骤,使用了MATLAB2022a。算法涉及水印嵌入和提取,利用LAB色彩空间可能用于隐藏水印。水印通过二维CS-SCHT变换、低频系数处理和特定解码策略来提取。代码段展示了水印置乱、图像处理(如噪声、旋转、剪切等攻击)以及水印的逆置乱和提取过程。最后,计算并保存了比特率,用于评估水印的稳健性。
|
1天前
|
算法
MATLAB|【免费】融合正余弦和柯西变异的麻雀优化算法SCSSA-CNN-BiLSTM双向长短期记忆网络预测模型
这段内容介绍了一个使用改进的麻雀搜索算法优化CNN-BiLSTM模型进行多输入单输出预测的程序。程序通过融合正余弦和柯西变异提升算法性能,主要优化学习率、正则化参数及BiLSTM的隐层神经元数量。它利用一段简单的风速数据进行演示,对比了改进算法与粒子群、灰狼算法的优化效果。代码包括数据导入、预处理和模型构建部分,并展示了优化前后的效果。建议使用高版本MATLAB运行。
|
3天前
|
算法 计算机视觉
基于高斯混合模型的视频背景提取和人员跟踪算法matlab仿真
该内容是关于使用MATLAB2013B实现基于高斯混合模型(GMM)的视频背景提取和人员跟踪算法。算法通过GMM建立背景模型,新帧与模型比较,提取前景并进行人员跟踪。文章附有程序代码示例,展示从读取视频到结果显示的流程。最后,结果保存在Result.mat文件中。
|
3天前
|
资源调度 算法 块存储
m基于遗传优化的LDPC码OMS译码算法最优偏移参数计算和误码率matlab仿真
MATLAB2022a仿真实现了遗传优化的LDPC码OSD译码算法,通过自动搜索最佳偏移参数ΔΔ以提升纠错性能。该算法结合了低密度奇偶校验码和有序统计译码理论,利用遗传算法进行全局优化,避免手动调整,提高译码效率。核心程序包括编码、调制、AWGN信道模拟及软输入软输出译码等步骤,通过仿真曲线展示了不同SNR下的误码率性能。
9 1
|
3天前
|
存储 算法 数据可视化
基于harris角点和RANSAC算法的图像拼接matlab仿真
本文介绍了使用MATLAB2022a进行图像拼接的流程,涉及Harris角点检测和RANSAC算法。Harris角点检测寻找图像中局部曲率变化显著的点,RANSAC则用于排除噪声和异常点,找到最佳匹配。核心程序包括自定义的Harris角点计算函数,RANSAC参数设置,以及匹配点的可视化和仿射变换矩阵计算,最终生成全景图像。
|
3天前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
16 1
|
3天前
|
算法 调度
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
考虑需求响应的微网优化调度模型【粒子群算法】【matlab】
|
3天前
|
运维 算法
基于改进遗传算法的配电网故障定位(matlab代码)
基于改进遗传算法的配电网故障定位(matlab代码)
|
3天前
|
算法 调度
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)
基于多目标粒子群算法冷热电联供综合能源系统运行优化(matlab代码)