【每日算法Day 101】字节跳动 AI Lab 精选面试编程题

简介: 字节跳动 AI Lab 精选面试编程题

0-1 背包问题(浮点数)


0-1 背包问题,一共 n < 20 个物品,每个物品价格 p[i] (浮点数),重量 w[i] (浮点数),背包容量 M (浮点数)。求最大能装的价值是多少?

输入:20 678.9123.56 51.5631.45 23.5662.54 45.6215.32 42.2312.32 65.3265.12 32.4515.65 45.7862.15 98.3232.15 45.6215.44 95.3245.65 99.4532.15 22.4823.56 51.5631.45 23.5662.54 45.6215.32 42.2312.32 65.3265.12 32.4515.65 45.7862.15 98.32输出:1050.07

题解


因为这里全部都是浮点数,所以没有办法直接用普通的动态规划来做,这里我提供几个思路。

方法1:

如果小数点只有两位的话,很简单,所有数字统一乘以 100 ,那么就都变成整数了。然后就可以直接用普通的 0-1 背包方法来做。


image.png

代码



#include <bits/stdc++.h>using namespace std;typedeflonglongll;constintmod=1e9+7;constintN=22;
structnode {    doublew, p;  
booloperator< (constnode&rhs) const {  
returnw<rhs.w;  
             }} a[1<<N], b[1<<N];
intmain() { 
intn;    doubleM;
scanf("%d%lf", &n, &M);  
printf("%f\n", M);  
vector<double>w(n, 0), p(n, 0);  
for (inti=0; i<n; ++i) {  
scanf("%lf%lf", &w[i], &p[i]); 
    }    printf("%f\n", tmp); 
intca=0, cb=0;   
for (ints=0; s< (1<<(n/2)); ++s) {  
doubletot_w=0, tot_p=0; 
for (inti=0; i<n/2; ++i) {   
if (s&(1<<i)) {     
tot_w+=w[i]; 
tot_p+=p[i];    
if (tot_w>M) break;  
            }     
        }       
if (tot_w<=M) {   
a[ca].w=tot_w;   
a[ca].p=tot_p; 
ca++;     
        }   
    }  
for (ints=0; s< (1<<(n-n/2)); ++s) { 
doubletot_w=0, tot_p=0; 
for (inti=0; i<n-n/2; ++i) {  
if (s&(1<<i)) {    
tot_w+=w[n/2+i];
tot_p+=p[n/2+i]; 
if (tot_w>M) break;
            }      
        }      
if (tot_w<=M) {    
b[cb].w=tot_w;   
b[cb].p=tot_p;    
cb++;      
        }   
    }    
sort(a, a+ca); 
sort(b, b+cb);   
vector<double>maxp(cb, 0); 
maxp[0] =b[0].p; 
for (inti=1; i<cb; ++i) { 
maxp[i] =max(maxp[i-1], b[i].p);
    }   
intj=cb-1;   
doubleres=0; 
for (inti=0; i<ca; ++i) { 
while (j>=0&&a[i].w+b[j].w>M) --j;
if (j<0) break; 
res=max(res, a[i].p+maxp[j]);  
    }  
printf("%f\n", res);  
return0;
}

最小长度子数组


给一个正数数组,找出最小长度连续子数组,其和大于等于 m

题解



image.png

代码



#include <bits/stdc++.h>using namespace std;intmain() { 
intn, m;   
scanf("%d%d", &n, &m);
vector<int>a(n, 0);  
for (inti=0; i<n; ++i) {   
scanf("%d", &a[i]);   
    }    intj=0, sum=0, res=INT_MAX;
for (inti=0; i<n; ++i) {   
sum+=a[i];     
while (sum>=m) {   
res=min(res, i-j+1); 
sum-=a[j++];     
        }   
    }   
printf("%d\n", res); 
return0;
}

image.png

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


相关文章
|
7月前
|
人工智能 算法 搜索推荐
电商API的“AI革命”:全球万亿市场如何被算法重新定义?
AI+电商API正引领智能商业变革,通过智能推荐、动态定价与自动化运营三大核心场景,大幅提升转化率、利润率与用户体验。2025年,75%电商API将具备个性化能力,90%业务实现智能决策,AI与API的深度融合将成为未来电商竞争的关键基石。
|
10月前
|
人工智能 自然语言处理 算法
阿里云 AI 搜索开放平台:从算法到业务——AI 搜索驱动企业智能化升级
本文介绍了阿里云 AI 搜索开放平台的技术的特点及其在各行业的应用。
1011 3
|
5月前
|
机器学习/深度学习 人工智能 算法
当AI提示词遇见精密算法:TimeGuessr如何用数学魔法打造文化游戏新体验
TimeGuessr融合AI与历史文化,首创时间与空间双维度评分体系,结合分段惩罚、Haversine距离计算与加权算法,辅以连击、速度与完美奖励机制,实现公平且富挑战性的游戏体验。
|
12月前
|
人工智能 编解码 算法
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
本文介绍了通义灵码2.0 AI程序员在嵌入式开发中的实战应用。通过安装VS Code插件并登录阿里云账号,用户可切换至DeepSeek V3模型,利用其强大的代码生成能力。实战案例中,AI程序员根据自然语言描述快速生成了C语言的base64编解码算法,包括源代码、头文件、测试代码和CMake编译脚本。即使在编译错误和需求迭代的情况下,AI程序员也能迅速分析问题并修复代码,最终成功实现功能。作者认为,通义灵码2.0显著提升了开发效率,打破了编程语言限制,是AI编程从辅助工具向工程级协同开发转变的重要标志,值得开发者广泛使用。
9009 71
DeepSeek加持的通义灵码2.0 AI程序员实战案例:助力嵌入式开发中的算法生成革新
|
10月前
|
机器学习/深度学习 人工智能 JSON
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
Paper2Code是由韩国科学技术院与DeepAuto.ai联合开发的多智能体框架,通过规划、分析和代码生成三阶段流程,将机器学习论文自动转化为可执行代码仓库,显著提升科研复现效率。
1313 19
这个AI把arXiv变成代码工厂,快速复现顶会算法!Paper2Code:AI论文自动转代码神器,多智能体框架颠覆科研复现
|
11月前
|
人工智能 算法 数据处理
算法为舟 思想为楫:AI时代,创作何为?
本文探讨了AI时代创作领域的变革与挑战,分析了人类创作者的独特价值,并展望了未来创作的新图景。随着生成式AI技术的发展,创作的传统认知被颠覆,评价体系面临革新。然而,人类创作者凭借批判性思维、情感智能、创意直觉和伦理自觉,依然具有不可替代的价值。文章呼吁创作者转变思维,从竞争走向合作,提升复合能力,关注作品的社会影响,并持续学习进化。在AI助力下,创作将更加民主化、多样化,推动文明进步。最终,人机协同或将成为未来创作的核心模式,共同开创文化发展的新纪元。
|
11月前
|
算法
面试场景题:如何设计一个抢红包随机算法
本文详细解析了抢红包随机算法的设计与实现,涵盖三种解法:随机分配法、二倍均值法和线段切割法。随机分配法通过逐次随机分配金额确保总额不变,但易导致两极分化;二倍均值法优化了金额分布,使每次抢到的金额更均衡;线段切割法则将总金额视为线段,通过随机切割点生成子金额,手气最佳金额可能更高。代码示例清晰,结果对比直观,为面试中类似算法题提供了全面思路。
1663 16
|
11月前
|
人工智能 监控 算法
Python下的毫秒级延迟RTSP|RTMP播放器技术探究和AI视觉算法对接
本文深入解析了基于Python实现的RTSP/RTMP播放器,探讨其代码结构、实现原理及优化策略。播放器通过大牛直播SDK提供的接口,支持低延迟播放,适用于实时监控、视频会议和智能分析等场景。文章详细介绍了播放控制、硬件解码、录像与截图功能,并分析了回调机制和UI设计。此外,还讨论了性能优化方法(如硬件加速、异步处理)和功能扩展(如音量调节、多格式支持)。针对AI视觉算法对接,文章提供了YUV/RGB数据处理示例,便于开发者在Python环境下进行算法集成。最终,播放器凭借低延迟、高兼容性和灵活扩展性,为实时交互场景提供了高效解决方案。
879 5
|
12月前
|
数据采集 人工智能 编解码
算法系统协同优化,vivo与港中文推出BlueLM-V-3B,手机秒变多模态AI专家
BlueLM-V-3B是由vivo与香港中文大学共同研发的多模态大型语言模型,专为移动设备优化。它通过算法和系统协同优化,实现了高效部署和快速生成速度(24.4 token/s),并在OpenCompass基准测试中取得优异成绩(66.1分)。模型小巧,语言部分含27亿参数,视觉编码器含4000万参数,适合移动设备使用。尽管如此,低端设备可能仍面临资源压力,实际应用效果需进一步验证。论文链接:https://arxiv.org/abs/2411.10640。
467 9

热门文章

最新文章