阿里实习生笔试程序检测题目

2024-05-13 20:58

本文主要是介绍阿里实习生笔试程序检测题目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

昨天晚上偶然看到同学在做阿里实习生笔试中的程序编码检测,题目如下给定两个数组A和B,假定其中有四个元素即为:A=[a1,a2,a3,a4]  B=[b1,b2,b3,b4];
那么将B中的元素插入到A之中,可以在A数组中任意位置插入任意个。即有如下可能:
C=[a1,b1,b2,b3,b4,a2,a3,a4]; 或者C =[b1,a1,b2,b3,a2,a3,b4,a4]等可能;
然后将新数组中元素进行两两相乘并再次类和运算,输出其中和最大的一个组合。(其中1234的顺序不能改变)
题目限时为30分钟,有限时间内感觉该题目的难度确实有点大。
第一想法是暴力破解:
vector<int> MaxSum(vector<int> A,vector<int> B){int sum=0;int length=A.size();int i=0;while(i<length){queue<int> Aq,Bq;for(int j=0;i<length;i++)Aq.push(A[i]);for(int j=0;i<length;i++)Bq.push(B[i]);vector<int> C;for(int j=0;j<i;j++){int k=Aq.front();C.push_back(k);Aq.pop();}}
}

然后写了这么多写不下去了。。。感觉情况太过复杂难以分析,所以就鸽了,感觉用二叉树不知道会不会容易点,但是单纯的使用数组的难度有点大。递归好难啊!!!!好难插,感觉头脑太笨难以解决。
然后今天下午想了想,突然灵光一闪,是不是可以通过选择两数之间最小的数插入到一个新的链表之中,然后对数组进行求值,因为每次对比都是两个数组中最小的元素,所以这样来说相对乘积应该也是最小的一组。所以这种解法是动态规划?还是贪心?我算法基础不好啊,就是感觉能这样解来着,也不清楚到底能不能解决题目,所以附上自己编的程序,希望有大牛给点解读吧!我这题没底的,所以仅供各位做一个参考也是自己学习的记录吧:
vector<int> MaxSum(vector<int> A,vector<int> B){int sum=0;int length=A.size();int i=0;queue<int> Aq,Bq;for(int j=0;i<length;i++)Aq.push(A[i]);for(int j=0;i<length;i++)Bq.push(B[i]);vector<int> C;while(i<2*length){if(Aq.front()<Bq.front())C.push_back(Aq.front());elseC.push_back(Bq.front());		}for(int k=0;k<C.size();){sum+=C[k]*C[k+1];k+=2;}return C;
}

鸽了鸽了,感觉有点难啊!30分钟并不能解出来,所以看来阿里已经离我远去了啊!
刚刚看了看好像还是有点问题,没有控制Aq和Bq两个队列弹出,所以输出肯定不对,所以又改了改:
vector<int> MaxSum(vector<int> A,vector<int> B){int sum=0;int length=A.size();int i=0;queue<int> Aq,Bq;for(int j=0;i<length;i++)Aq.push(A[i]);for(int j=0;i<length;i++)Bq.push(B[i]);vector<int> C;while(i<2*length){if(Aq.empty()||Bq.empty())   //添加跳出循环判断条件break;if(Aq.front()<Bq.front()){C.push_back(Aq.front());Aq.pop();}else{C.push_back(Bq.front());Aq.pop();}		}if(Aq.empty()){//添加对一方队列为0时的插入方式;while(!Bq.empty()){C.push_back(Bq.front());Bq.pop();}}else{while(!Aq.empty()){C.push_back(Aq.front());Aq.pop();}}for(int k=0;k<C.size();){sum+=C[k]*C[k+1];k+=2;}return C;
}
好了好了最后就是这样了,不改了,写的头疼。

这篇关于阿里实习生笔试程序检测题目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/986812

相关文章

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

题目1254:N皇后问题

题目1254:N皇后问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: N皇后问题,即在N*N的方格棋盘内放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在同一斜线上。因为皇后可以直走,横走和斜走如下图)。 你的任务是,对于给定的N,求出有多少种合法的放置方法。输出N皇后问题所有不同的摆放情况个数。 输入