2025年经典算法面试题及答案.pdfVIP

  • 1
  • 0
  • 约3.07万字
  • 约 38页
  • 2025-10-21 发布于山东
  • 举报

以家为家,以乡为乡,以国为国,以天下为天下。——《管子》

1.时针分针重合几次

表面上有60个小格,每小格代表一分钟,

时针每分钟走1/12小格,分针每分钟走1小格,从第一次重合到第二次重合分

针比时针多走一圈即60小格,所以

60/(1-1/12)=720/11

每隔720/11分才重合一次(而并不是每小时重合一次)

1440里有22个720/11,如果说算上0点和24点,那也是重合23次而已,

但我觉得0点应该算到前一天的24点头上,所以每一天循环下来重合22次啊

2.找出字符串的最长不重复子串,输出长度

建一个256个单元的数组,每一个单元代表一个字符,数组中保存上次该字符

上次出现的位置;

依次读入字符串,同时维护数组的值;

如果遇到冲突了,就返回冲突字符中保存的位置,继续第二步。也可以用

hashmap保存已经出现的字符和字符的位置

3.说是有一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁

现的前十个词。

先用哈希,统计每个词出现的次数,然后在用在N个数中找出前K大个数的方

法找出出现

臣心一片磁针石,不指南方不肯休。——文天祥

次数最多的前10个词。

4.如题3,但是车次文件特别大,没有办法一次读入内存。

1)直接排序,写文件时,同时写入字符串及其出现

次数。

2)可以用哈希,比如先根据字符串的第一个字符将字符串换分为多个区域,每

个区域的字符串写到一个文件内,然后再用哈希+堆统计每个区域内前10个频

率最高的字符串,最后求出所有字符串中前10个频率最高的字符串。

5.有一个整数n,将n分解成若干个整数之和,问如何分解能使这些数的乘积

最大,输出这个乘积m。例如:n=12

(1)分解为1+1+1+…+1,12个1,m=1*1*1……*1=1

(2)分解为2+2+…+2,6个2,m=64

(3)分解为3+3+3+3,4个3,m=81

(4)大于等于4时分解时只能分解为2和3,且2最多两个

f(n)=3*f(n-3)n4

f(4)=2*2

f(3)=3

f(2)=2分解为4+4+4,3个4,m=64

6.求数组n中出现次数超过一半的数

古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼

把数组分成[n/2]组,则至少有一组包含重复的数,因为如果无重复数,则最多

只有出现次数等于一半的数。算法如下:

k-n;

whilek3do

把数组分成[k/2]组;

fori=1to[k/2]do

if组内2个数相同,则任取一个数留下;

else2个数同时扔掉;

k-剩下的数

ifk=3

then任取2个数进行比较;

if两个数不同,则2个数都扔掉

else任取一个数

ifk=2or1then任取一数

7.A文件中最多有n个正整数,而且每个数均小于n,n=10的七次方。不

会出现重复的数。

要求对A文件中的数进行排序,可用内存为1M,磁盘可用空间足够。

不要把任何问题都往很复杂的算

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档