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

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

相关文章

Mysql 驱动程序的程序小结

《Mysql驱动程序的程序小结》MySQL驱动程序是连接应用程序与MySQL数据库的重要组件,根据不同的编程语言和应用场景,MySQL提供了多种驱动程序,下面就来详细的了解一下驱动程序,感兴趣的可以... 目录一、mysql 驱动程序的概念二、常见的 MySQL 驱动程序1. MySQL Connector

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

linux配置podman阿里云容器镜像加速器详解

《linux配置podman阿里云容器镜像加速器详解》本文指导如何配置Podman使用阿里云容器镜像加速器:登录阿里云获取专属加速地址,修改Podman配置文件并移除https://前缀,最后拉取镜像... 目录1.下载podman2.获取阿里云个人容器镜像加速器地址3.更改podman配置文件4.使用po

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序