http://www.newsmth.net/frames.html

发信人: cutepig (cutepig), 信区: Algorithm
标  题: 求助:5道算法题
发信站: 水木社区 (Sat Nov 10 18:25:06 2007), 站内

1)given a integer, output its previous and next neighbor number which has the same number of bit 1 in their binary representation.
(1)只想到一种很笨的方法,就是将这个数递增或者递减,直到找到一个和它1的位数一样多的为止,应该有更好的方法
(2)
满足条件的比这个数大的数应该是这个数从最低位开始,找到的第一个的01组合对调。
满足条件的比这个数小的数应该是这个数从最低位开始,找到的第一个的10组合对调。

2) Given 1 GB memory, input a file which contians 4 billion integers, output one integer that is not in the file. What if you have only 10 MB memory?
这个如果用一位表示一个数的存在与否的话,需要2^32bits=2^32/8bytes=2^29=512MB内存,用10M的话似乎只能读多次文件,每次判断某一部分数存在与否,有没有更好的办法?

3) how to divide an integer array into 2 sub-arrays and make their averages equal? e.g. a[left_portion]/left_portion_num == a[right_portion]/right_portion_num.

4)Given n unsigned integer, output 2 integers which has the maximum result after XOR.
莫非要遍历所有可能的组合?

5)Input an integer array of size n and an integer k (k<=n), output all subsets of size k.
(1)这个类似于全排列的生成算法吧,想出一个递归的回溯方法
array,n:数组和数组大小
k:子数列大小
void output(int *array,int n,int k)
{
   static int used[n];//这个静态数组记录是否该元素已经输出了,初始化为0
   static int outdata[k];//记录已经输出的元素
   if k<=0 ,return;
   对于array的每一个未输出的元素array[i]
  {
     将该元素放到outdata中,标记used[i]=1;
     如果满k个了,则输出outdata的数据
     否则,递归调用output(array,n,k-1)
     回溯,令used[i]=0;
  }
}
(2)或者写一个Next函数用来计算当前排列的下一个排列

BOOL Next(int *data,int nmax,int k)
{
int i;
#define MyMax(i) (nmax-k+i)
for (i=k-1;i>=0 ;i--)//从后向前找到第一个可以增加的数
{
ASSERT(data[i]>=0 && data[i]<=MyMax(i));
if(data[i]<MyMax(i))
{
break;
}
}
if(i>=0)//将该位++,后面各位递增
{
data[i]++;
for (int j=i+1;j<k;j++)
{
data[j]=data[j-1]+1;
ASSERT(data[j]<=MyMax(j))
}
return TRUE;
}
else
return FALSE;

}

初始化data={0,...,k-1},再一直调用Next就可以得到所有的排列
发信人: scottfield (金蛇郎君), 信区: Algorithm
标  题: Re: 求助:5道算法题
发信站: 水木社区 (Sat Nov 10 20:18:14 2007), 站内

第三个,可以参考CLRS,可以线性时间求得,是weighted-select problem
把值看成权就行了。

发信人: scottfield (金蛇郎君), 信区: Algorithm
标  题: Re: 求助:5道算法题
发信站: 水木社区 (Sat Nov 10 20:24:24 2007), 站内

第四题,XOR是 00->1 11->1是不?

则只要找出两个最高位相同的倍数最多的不就行了?

用Significant-bit Radix Sort 

发信人: ttl (小驴|主ID), 信区: Algorithm
标  题: Re: 求助:5道算法题
发信站: 水木社区 (Sat Nov 10 20:36:27 2007), 站内

【 在 wlalbert (找个打我球的女朋友) 的大作中提到: 】
如何用c++实现?
【 在 cutepig (cutepig) 的大作中提到: 】
: 似乎真的是这样呀
: 满足条件的比这个数大的数应该是这个数从最低位开始,找到的第一个的01组合对调。
: 满足条件的比这个数小的数应该是这个数从最低位开始,找到的第一个的10组合对调。
: ...................

void find(int i)
{
        int f = 3; // 11
        int pf = 2; // 10
        int nf = 1; // 01

int p = 0; // 小
        int n = 0; // 大

while (f < 4 * i)
        {
                int tmp = f & i;
                if (!p)
                {
                        if (0 == (tmp ^ pf))
                                p = i ^ f;
                }
                if (!n)
                {
                        if (0 == (tmp ^ nf))
                                n = i ^ f;
                }

f  <<= 1;
                pf <<= 1;
                nf <<= 1;
        }

cout << p << endl;
        cout << n << endl;
}
发信人: zgx03 (时间旅客), 信区: Algorithm
标  题: Re: 求助:5道算法题
发信站: 水木社区 (Sat Nov 10 21:07:26 2007), 站内

第4题这么做,
设原数组为A,里面的元素取反后形成第二个数组B,把这两个数组合起来形成数组C。
把C排一下序,找C的相邻两个分别属于A和B且二进制最高几位连续相同最多的,即可。
复杂度NlogN。

转载于:https://www.cnblogs.com/cutepig/archive/2007/11/10/955539.html

Re: 求助:5道算法题相关推荐

  1. BAT七年经验,却抵不过外企面试的两道算法题?

    整理| 琥珀 出品| AI科技大本营 又遇年底跳槽季,如果你曾在 BAT 等互联网大厂有过较为丰富的工作经验,想要换份工作,面试时会主要考虑哪些因素? 面试外企,却被两道算法题难住? 近日,一位网友在 ...

  2. 字节面试必须拿下的十道算法题,你会几道?

    前言 大家好,我是bigsai. 最近不少小伙伴跟我交流刷题肿么刷,我给的建议就是先剑指offer和力扣hot100,在这些题中还有些重要程度和出现频率是非常非常高的,今天给大家分享当今出现频率最高的 ...

  3. java的简单算法题_[2]十道算法题【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  4. BAT 七年经验,却抵不过外企面试的两道算法题?

    整理| 琥珀 出品| AI科技大本营 又遇年底跳槽季,如果你曾在 BAT 等互联网大厂有过较为丰富的工作经验,想要换份工作,面试时会主要考虑哪些因素? 面试外企,却被两道算法题难住? 近日,一位网友在 ...

  5. [2]十道算法题【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

  6. 【算法】两道算法题根据提供字母解决解码方法和城市的天际线天际线问题

    算法目录 解码方法 Java解答参考: 天际线问题 Java解答参考: 大家好,我是小冷. 上一篇了解了项目相关的知识点 接下来看下两道算法题吧,用Java解答,可能更能激发一下大脑思考. 解码方法 ...

  7. 2021年刷这600多道算法题,轻松进大厂

    截止到目前我已经写了 600多道算法题,其中部分已经整理成了pdf文档,目前总共有1000多页(并且还会不断的增加),大家可以免费下载 下载链接:https://pan.baidu.com/s/1hj ...

  8. 2016恒生电子秋招笔试两道算法题

    2016恒生电子笔试两道算法题 1.求出1到100之间所有素数,要求时间复杂度最优. 我的最优解决方案是吧素数一个个放入一个素数数组里面(初始吧2放进去),后面的数只要判断是否能够整除这个素数数组里面 ...

  9. 刷了 1000 多道算法题,我想说……

    点击蓝字 关注我们 算法在编程中,是十分重要的,但学起来也是最困难的,也是最容易快速从入门到放弃. 不知道大家有没有遇到过以下这几种情况: 拿到题目一脸懵逼,不知道如何下手: 拿到题目后开始着手写代码 ...

最新文章

  1. exchange2003的部署
  2. 30天敏捷结果(30):提升敏捷结果
  3. BZOJ4350: 括号序列再战猪猪侠
  4. 在创业公司做架构师,你需要解决哪些问题?
  5. session的存储方式和配置
  6. 跟着这篇柳叶刀的文章来学会重复测量方差分析
  7. 【TensorFlow】——索引与切片
  8. SQL-92标准 中文翻译——定义、记号和约定 (记号)
  9. 一个架构师谈什么是架构,以及怎么成为架构师
  10. BZOJ1027[JSOI2007] 合金
  11. Redis常用命令、数据类型讲解
  12. 系统动力学 matlab,MATLAB引擎在系统动力学仿真中的应用.pdf
  13. 没落的移动端原生开发
  14. 《如何阅读一本书》章节要点整理
  15. oracle中给予权限,Oracle给予用户权限
  16. 网易蓝牙耳机怎么切换双耳_2020双十一蓝牙耳机怎么选?有哪些便宜又好用的蓝牙耳机?有哪些适合学生党的蓝牙耳机?《选购指南》...
  17. Android集成环信IM,实现为某一个好友设置消息免打扰
  18. 01-【介绍说明篇】Hello,ArcGIS网络分析
  19. 怎样用电池给铁锅作防锈
  20. 【PHP】json返回大括弧和中括弧,json返回{}和[]

热门文章

  1. java跨域权重_爱站权重查询 API 接口请求调用
  2. oracle 统计信息字典表,Oracle数据字典表查询
  3. centos设置mysql为系统服务_CentOS系统如何设置Apache和MYSQL服务开机自动运行
  4. 深蓝学院的深度学习理论与实践课程:第一章
  5. 3D相机(1):1、了解
  6. Mask Rcnn训练自己的航拍数据集
  7. GitHub上分享的常用算法和数据结构实现原理可视化系统
  8. 二十岁出头的时候上,你一无所有,你拥有一切
  9. Python计算机视觉——图像到图像的映射
  10. 事物的级别_浅谈MySQL并发控制:隔离级别、锁与MVCC