想问朋友面试中遇到的一个算法题:

问题描述

想问朋友面试中遇到的一个算法题:

Write a program in Java to assess a given string whether it complies with following patterns. Return true if a given string complies with these patterns else false.

N = N1 + N2
N>= N1 >= N2

where N is the Nth element in the string or element at Nth position;
N1 is the (N-1) element in the string & N2 is the (N-2) element in the string.

Example 1: 224610
Elements in this string are 2, 2, 4, 6, 10.
First Set: 2+2=4 (N2=2; N1=2 & N= 4);
Second Set: 2+4=6 (N2=2; N1=4 & N=6);
Third Set: 4+6=10 (N2=4; N1=6 & N= 10)

Example 2: 1112233558
Elements in this string are 1, 11, 12, 23, 35, 58

Example 3: 1101102203
Elements in this string are 1, 101, 102, 203.
怎么样确定数字的位数呢?

解决方案

这就是费波拉契数列,不需要判断位数,只要尝试就可以了。
而且因为N>=N1>=N2,所以第二个数的位数也必然>=第一个,所以尝试的运算量进一步降低。

解决方案二:

而且我们知道99+999=1098,因此N的位数最多也就比N2的位数大1,最小不会小于N2的位数,我们可以这么尝试:
假设整个字符串长度是L,让N=(L-1)/2
1 1 1
1 1 2
1 2 2
1 2 3
...
1 N N
2 2 2
2 2 3
...

时间: 2024-12-31 12:28:28

想问朋友面试中遇到的一个算法题:的相关文章

想问一下Java中常用的配置文件保存格式。例如:我的程序中可以添加很多FTP的信息,我想问一下这些FTP信息最常用什么格式保存成文件?

问题描述 想问一下Java中常用的配置文件保存格式.例如:我的程序中可以添加很多FTP的信息,我想问一下这些FTP信息最常用什么格式保存成文件? 解决方案 解决方案二:我一般用xml文件来保存,用Properties这个类来读取解决方案三:一般用XML文件吧.我用XML保存,用DOM4J来读写

面试题-今天朋友去面试看到一个算法题,求解

问题描述 今天朋友去面试看到一个算法题,求解 如题,完全没思路啊orz求指教,按照题目推测似乎是一个两个数之间距离为自身进行排序的算法,但是具体实现完全没思路,实在不行求个算法名也好啊orz 解决方案 public class Test { int n = 4; int[] arr = new int[2*n]; public void init(){//初始化 for(int i = 0; i<2*n; i++){ arr[i] = -1; } } public void sort(int g

想问一下 universe中检查完整性出现孤立链接

问题描述 想问一下universe中检查完整性出现孤立链接什么意思?应该怎么解决? 解决方案

090901 T 面试中遇到的一个Sql Question

10k的面试中遇到的一个Sql Question,当时没有做完整,后来回到易车工作的时候又遇到这个问题,结果同事都没做出来. 问题:表:Category: ID NameItems: ID CateID Name获取某个Category中的第一个item,显示其及其category的内容 最后的解决方案:select c.ID cID, c.Name cName, i.ID iID, i.Name iNamefrom Items i inner join Category c on i.Cate

编程题-面试中碰到的java基础题

问题描述 面试中碰到的java基础题 今天面试碰到这么一个问题,想了半天,不知如何回答 P1=V1; P2=V2; method(P1,P2){ P1=V3; P2=V4; } 结果是P1=V1;P2=V4;问P1P2是什么类型的时候才会出现这种情况 解决方案 在传递的时候,如果传递的是原生数据类型,则值不会改变 public class Test { public static void main(String[] args) { int a = 1; int b = 2; swap(a,b)

一个算法题,求答案啊啊啊啊

问题描述 一个算法题,求答案啊啊啊啊 白班 09:00-18:00 通班 09:00-21:00 每个人每个月通班数量必须等于早中班和中晚班数量之和 早中班 09:00-15:00 中晚班 15:00-21:00 假设:每月按照30计算. 排班规则: 1.每个人每个月固定休息6天连续上班天数不超过7天. 2.每天各班次上班的人数最低需求:8个白班5个通班1个早中班,2个中晚班. 3.每个月每个人的通班天数安排不超过8天. 4.每个人每个月早中班和中晚班的天数之和需要与通班天数相等. 5.每月最多

想问一下大牛们,怎样策划一个自已的人生,使自已月入1w+?

问题描述 想问一下大牛们,怎样才能使自已月入1W+?本人做程序也都有3年了,一直都是用c#做winform开发,工资,现在是3.5k.工作地点在广东东莞.现在作个5年规划,5年后月入1w,那具体需要什么技能?应该怎样做好自已的人生策划?需要转语言吗?如转为c,c++,java??需要转工作为非编码吗?如转为项目负责人等等.还是月工资5k,然后去做外快,5k/月?有点迷茫,恳请大牛们指点.非常谢谢. 解决方案 解决方案二:应该深入了解C#,有了基础就应该更进一步,这样加工资才快...也可以转管理,

python-请问Python tk中怎样使一个按钮被点击一次之后就变为灰色无效?

问题描述 请问Python tk中怎样使一个按钮被点击一次之后就变为灰色无效? 请问在Python tk中比如说我设置了这样一个按钮, Button(root,text=a,width=10,command=lambda:newExpression(a)).grid(row=1,column=0) 那么怎样使这个按钮被点击一次之后就变为灰色无效? 解决方案 没用过tk,帮你搜索了下,http://stackoverflow.com/questions/20596892/disabling-but

前端面试中的常见的算法问题

虽说我们很多时候前端很少有机会接触到算法.大多都交互性的操作,然而从各大公司面试来看,算法依旧是考察的一方面.实际上学习数据结构与算法对于工程师去理解和分析问题都是有帮助的.如果将来当我们面对较为复杂的问题,这些基础知识的积累可以帮助我们更好的优化解决思路.下面罗列在前端面试中经常撞见的几个问题吧. Q1 判断一个单词是否是回文? 回文是指把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环.比如 mamam redivider . 很多人拿到这样的题目非常容易