才在JavaEye论坛看一个帖子求助腾讯一道面试题的解法。
题目是这样的:给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数
要求下排每个数都是先前上排对应那个数在下排十个数中出现的次数。
上排的十个数如下:
【0,1,2,3,4,5,6,7,8,9】
JavaEye论坛里面有人给出了一个java实现的算法。
public class Test
{
public static void main(String[] args)
{
NumberTB nTB = new NumberTB(10);
int[] result = nTB.getBottom();
for(int i=0;i<result.length;i++)
{
System.out.print(result[i] + " ");
}
}
}
class NumberTB
{
private int[] top;
private int[] bottom;
private int len;
private boolean success;
//please into len >= 4
public NumberTB(int len)
{
this.len = len <= 4 ? 4 : len;
this.success = false;
this.top = new int[this.len];
this.bottom = new int[this.len];
//format top
for(int i=0;i<this.len;i++)
{
this.top[i] = i;
}
}
public int[] getBottom()
{
int i = 0;
while(!this.success)
{
i++;
setNextBottom();
}
System.out.println("执行了: " + i + "次循环得到结果");
return this.bottom;
}
//set next bottom
private void setNextBottom()
{
boolean reB = true;
for(int i=0;i<this.len;i++)
{
int frequecy = getFrequecy(i);
if(this.bottom[i] != frequecy)
{
this.bottom[i] = frequecy;
reB = false;
}
}
this.success = reB;
}
//get frequency in bottom
private int getFrequecy(int num)
{
int count = 0;
for(int i=0;i<this.len;i++)
{
if(this.bottom[i] == num)
count++;
}
return count;
}
}
下面给出一个更具一般性的结论:
这个是有规律可循的,不仅0~9有唯一解,0~n都只有唯一解。关键是最后面一个1它可以左右移动,1和2下面的数永远是2和1,0下面对应的数为n-3(n>=3),上排数n-3下面对应的数为1,其它上排数下面对应为0就ok了。有了这个一般性的结论再大的数都可以马上给出答案。
比如 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
12 2 1 0 0 0 0 0 0 0 0 0 1 0 0 0
请大家验证,这个算法可以用到数据压缩领域。
分享到:
相关推荐
**知识点**:本题考查二叉树的遍历及最长路径的计算。 **解题思路**: 1. **深度优先搜索**:使用深度优先搜索遍历二叉树。 2. **递归计算高度**:计算左右子树的高度,从而得出最大距离。 **实现细节**: - 在...
本压缩包包含两份珍贵的资料——“腾讯笔试题专辑(含答案).pdf”和“腾讯面试题.pdf”,它们提供了丰富的腾讯面试及笔试题目,对于准备应聘腾讯或其他IT企业的求职者来说,是一份极具价值的学习资源。 首先,我们来...
### 腾讯PHP面试题解析 #### 一、正则表达式的对比 **题目描述:** 对比 POSIX 风格和 Perl 兼容的正则表达式(PCRE)中的主要函数。 1. **eregi vs preg_match** - **eregi** (已废弃):用于检查字符串是否与...
一年之前的10月14日,一个名叫July (头像为手冢国光)的人在一个叫csdn的论坛上开帖分享微软等公司数据结构+算法面试100题,自此,与上千网友一起做,一起思考,一起解答这些面试题目,最终成就了一个名为:结构之...
文件描述了一个名为July的人在csdn论坛上分享微软等公司的数据结构与算法面试题集,并与网友共同讨论解答,最终形成了名为“结构之法算法之道”的博客。这说明面试题库对于程序员的准备和提高具有极大的帮助,而且在...
标题中的“google百度北电华为腾讯试题及面试”暗示了这个压缩包可能包含了这几家知名科技公司(Google、百度、北电、华为、腾讯)在招聘过程中常用的面试问题和相关测试题。这些公司都是信息技术行业的巨头,它们的...
以上内容只是对题目中涉及知识点的初步解析,实际的面试题可能需要更深入的解答,包括具体算法的实现细节、复杂度分析、最优解策略等。对于IT行业的求职者,扎实的数据结构和算法基础至关重要,这直接影响到他们在...
描述中的重复内容"google百度北电华为腾讯试题及面试.rargoogle百度北电华为腾讯试题及面试.rargoogle百度北电华为腾讯试题及面试.rargoogle百度北电华为腾讯试题及面试.rar"可能是输入错误,但可以理解为强调该...
压缩包内的"IT面试之腾讯笔试面试大礼包.txt"很可能包含了历年的笔试题和面试真题,这些题目往往反映了腾讯对候选人技术能力和逻辑思维的考察标准。求职者可以通过这些题目了解腾讯的出题风格,进行针对性的练习。...
下面我们将针对这些公司的试题及面试进行详细解析。 首先,让我们来看看Google的笔试题。Google以其严谨的面试流程闻名,其笔试题通常包括编程题和逻辑题。编程题可能涉及数据结构、算法优化等,例如设计高效的排序...
### 腾讯校园招聘知识点总结 ...对于希望加入腾讯的同学来说,提前了解招聘流程、熟悉常见的面试题型并做好充分准备是非常重要的。同时,也可以参考过往的笔试面试经验,以便更好地应对即将到来的挑战。
- 数据结构和算法面试题是评估求职者基础技能的重要工具。 - 通过解答这类题目,可以检验求职者对基本概念的理解、逻辑思维能力以及问题解决技巧。 - 对于想要进入顶级科技公司工作的求职者来说,掌握这些题目及其...
这份"腾讯校招面试笔试题.rar"的压缩包很可能包含了历年腾讯针对校招所设计的各种题目,涵盖了多个IT领域的核心知识点。以下将对可能涉及的领域进行详细讲解: 1. 数据结构与算法:腾讯作为一家技术驱动的公司,对...
腾讯作为国内知名的互联网巨头,其招聘流程往往包含了严谨的笔试环节,旨在评估应聘者的编程基础、算法理解以及问题解决能力。以下是对几道典型笔试题目的详细解析: 1. 设计程序缓存和查找算法以处理重复登录提醒 ...
### hadoop2面试题 - 2012腾讯笔试的一道算法题 #### 背景与题目概述 本文档提供了2012年腾讯笔试中一道关于字符串处理的算法题,该题目要求将字符串中的所有大写字母移动到字符串的末尾,同时保持其他字符的相对...