3.7题


3.21题

1.给定能随机生成整数 1 到 5 的函数,写出能随机生成整数 1 到 7 的函数。

提示:两个random就可以有25种可能,每种可能都是等概率的

2.判断一个自然数是否是某个数的平方,不能使用开方运算。

提示:(1)使用二分查找法,对1到N之间的数字进行判断。复杂度为O(log
n)

(2)由于(n+1)^2 =n^2
+ 2n + 1= ...=
1 + (2*1 + 1) + (2*2 + 1) + ... + (2*n + 1)

注意到这些项构成了等差数列(每项之间相差2)。

所以我们可以比较 N-1, N - 1 - 3, N - 1 - 3 - 5 ... 和0的关系。

如果大于0,则继续减;如果等于0,则成功退出;如果小于 0,则失败退出。

复杂度为O(n^0.5)。

3.如何在半径为1的圆中随机选取一点。

提示:用极坐标来表示

4.皇冠用户仓库开销:有一个淘宝商户,在某城市有n个仓库,每个仓库的储货量不同,现在要通过货物运输,

将每次仓库的储货量变成一致的,n个仓库之间的运输线路围城一个圈,即1->2->3->4->...->n->1->...,

货物只能通过连接的仓库运输,设计最小的运送成本(运货量*路程)达到淘宝商户的要求,并写出代码。

提示:遍历一遍,纪录欠的货量和多的货量,一旦有多的就向顺时针方向移动;复杂度:O(n)

4.5题

个数字:1至50.在接下来的49轮操作中,每次做如下动作:选取两个黑板上的数字a和b,

擦去,在黑板上写|b - a|。请问最后一次动作之后剩下数字可能是什么?为什么?

提示:找规律,要么留下全为奇数,要么为偶数


2.如何判断链表无环?

提示:(1)加一个数据结构,来记录链表的位置或者Key信息,遍历看看是不是会遇到相同的节点

(2)用两个指针一起走,一个步长是1,一个步长是2,然后遍历看看是不是会重合

3.有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。现在我们用小老鼠做实验,

要在1周内找出那桶毒酒,问最少需要多少老鼠。

提示:可以将酒混合后喝

答案:10只。将酒编号为1~1000 将老鼠分别编号为1 2 4 8 16 32 64 128 256 512 喂酒时 让酒的编号等于老鼠编号的加和如:17号酒喂给1号和16号老鼠  76号酒喂给4号、8号和64号老鼠 七天后将死掉的老鼠编号加起来 得到的编号就是有毒的那桶酒 因为2的10次方等于1024 所以10只老鼠最多可以测1024桶酒

证明如下:使用二进制表示:01, 10, 100, 1000, … , 1,000,000,000。对于任何一个小于1024的数,均可以采用前面的唯一一组二进制数来表示。故成立。


4.输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,

每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。 
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。
提示:遍历一遍,遇到sum<0,就重新从正数开始计数

5.输入n个整数,输出其中最小的k个。

提示:(1)先将所有数字建小堆,然后弹出K个值就可以了;复杂度:n+k*lgn

(2)现将任意k个数字建大堆,然后将剩下的数分别和堆顶数字比较,如果比堆顶数字小,就将堆顶的数字换掉,

比较剩下的n-k个数字后,堆里剩下的数字就是最小的k个;复杂度:k+(n-k)*lgk

6.设计包含min函数的栈

提示:在栈的旁边在加一个数组,记录最小的数的位置

最新文章

  1. Oracle 11.2.0.4 DataGuard 环境打PSU,OJVM PSU补丁快速参考
  2. C# 轻量级ORM 编写思维
  3. 【工作常用代码集】批量Telnet远端端口
  4. PHPCMSv9首页显示分页点击下一页跳转链接出现错误,跳转到后台的解决方案
  5. 图解Tomcat类加载机制
  6. wkhtmltopdf 中文参数详解
  7. Magicodes.WeiChat——缓存管理
  8. 拓扑排序 POJ 1049 Sorting It All Out
  9. map each 工具函数
  10. JAVASE 打印输出--------01
  11. python pdb调试以及sublime3快捷键设置
  12. PHP把数字ID转字母ID
  13. Map排序与有序
  14. kafka和storm集群的环境安装
  15. MySql修改root密码以及允许外网访问
  16. Oracle的下载安装教程以及所出现的问题
  17. 【BZOJ1047】[HAOI2007]理想的正方形(单调队列,动态规划)
  18. SQL存储过程使用方法
  19. 2016.5.57—— Remove Duplicates from Sorted List
  20. gvim编辑器_vimrc文件

热门文章

  1. 基于socket.io客户端与服务端的相互通讯
  2. cocos动画没有cc.Sprite.spriteFrame属性
  3. github发布版本
  4. 关于QPS、TPS、PV、UV、GMV、IP、RPS的名词解释!
  5. Linux软件包(源码包和二进制包)及其区别和特点
  6. Android笔记(十九) Android中的Fragment
  7. Linux命令——killall 、kill 、pkill、xkill
  8. Go 逃逸分析
  9. Educational Codeforces Round 41 967 E. Tufurama (CDQ分治 求 二维点数)
  10. 2016年第六届蓝桥杯C/C++程序设计本科B组决赛 ——一步之遥(填空题题)