保研面试 算法题_远景面试算法题——FolderSize

描述

文件被存储在磁盘上的时候,通常为cluster方式。每个cluster具有固定的大小,一个文件所消耗的空间量始终是cluster大小的整数倍。因此,如果cluster的大小为100字节,165字节的文件将会使用实际使用200字节的存储空间,造成35个空间的浪费。

一个folder会有多个file,每个file单独计算浪费空间;如果某个folder没有出现,浪费空间为0

定义

Method signature: int[] calculateWaste(String[] files, int folderCount,int clustersize)

输入参数说明:

files为输入的folder编号和对应的file大小的数组。例如{"0 55","0 47"},表示为folder 0 下面有两个文件,大小分别为55和47,按空格分隔。

folderCount为所有的folder个数。当folderCount为3的时候,会有0,1,2三个folder编号,clustersize为固定块大小。

返回值:每个folder对应的浪费空间大小

测试用例

files={"0 55","0 47","1 22","1 21"}。foldercount=3,clustersize=50

Returns:{48,57,0}

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

解题之前先安利两首歌《安河桥》《七月上》

今天面试之前包夜导致自己两眼昏花,看题目费解到半死(我发四我再也不会包夜了!)。让20min写出来,后来发现其实并不难。当然代码是否有误还要斟酌

核心:把字符串转换成数字

int * calculateWaste(string* files,int folderCount,intclustersize){int* waste=new int[folderCount];int filenum=sizeof(files)/sizeof(files[0]);int folderid=0,filesize=0;stringtemp;if(files==NULL||folderCount==0||clustersize==0){

cout<

}for(int i=0;i

temp=files[i];int j=0;while(temp[j]!=' '){ //计算folderID

folderid=folderid*10+temp[j]-'0';

j++;

}

j++; //跳跃空格

while(j

filesize=filesize*10+temp[j]-'0';

j++;

}

waste[folderid]+=(filesize/clustersize+1)*clustersize-filesize;

folderid=0;

filesize=0; //再次扫描下一个file前清空之前的数据

}returnwaste;

}

代码如上。为了面试官看的清楚,我还从新誊写了一份,然而···不说了。

关于这道题和同学讨论了一下:

1.要不要释放内存,事实上,是不用的。因为返回的内存必然是有用的,你以后要用的,所以不需要释放内存。当程序运行完毕,系统会为你做这个释放。

那关于动态申请的内存一定要记得释放是用于什么情况呢?在类中,如果你定义一个类,类中有动态申请的内存,在你的析构函数里一定要释放内存。(不知道我这种观点是否有误?)

2.还有关于string [] files,我用sizeof(files)/sizeof(files[0])这种方法求数组长度是基于每个元素是等长的,那如果string数组不等长了我要怎么求得长度呢?这个时候应该给出【长度参数】

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

面试的时候有些问题我真的没有考虑过,所以答的并不好:

1.为什么考seu,意思是怎么没保研

2.为什么不继续做QA(QA事实上也很难,也要求很高的技术,TDD--Testing Driven Develope)

3.自己写的算法代码一定要将细一点,最好分【多个函数】完成功能

4.BAT投了吗,结果如何(内心OS:这种问题我真的不知道怎么回答啊!!)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
folder Size是最好的一个文件夹大小浏览工具了,可以拖入文件夹,操作方便 folder Size是一款用于系统硬盘查看对比的工具,它可以帮助你查看系统中的磁盘文件使用状态,同时支持显示每个磁盘的文件和文件夹所占用空间的大小百分比,让你更加直观的了解您的磁盘空间分配情况。此工具拥有简洁的操作界面,拥有快速的扫描功能,仅需要几分钟的时间就可以检测完成。 功能特色: 查找并显示所有文件和文件夹大小。 扫描整个存储设备或选择的文件夹。 在不同的图表-柱状图,饼图显示文件和文件夹的大小等 在表中列出所有文件和文件夹的详细信息: 名称 文件夹大小 从父文件夹的大小的百分比的大小 文件夹数 子文件夹数 创建时间 上次修改时间 上次访问时间文件夹的所有者和组 上述排序选项列出所有不同的标准- 基于文件夹的名称,文件夹大小等 重新排列的选项列表中的列,以适应您的偏好。 找到Windows资源管理器中选择通过上下文菜单文件夹或文件 删除文件夹或文件。 相关的应用程序打开文件使用双击。 对于所有类型的存储设备支持 -硬盘驱动器,光驱,usb驱动器,软盘 简易资源管理器风格的导航通过后退,前进和文件夹向上工具按钮 使用方法: 1、下载Folder Size软件,安装。 2、软件安装完成以后,自动与Windows资源管理器集成在一起。以Windows XP为例,打开资源管理器,单击“查看→详细信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值