第一道题:求有删除情况的最长回文子串

题目:

解题思路:

这个题严格意义上来说,删除了字符就谈不上回文串了,既然有删除,那估计考察的不是回文串,而是其他的,但是这个东西又有回文串的特点,细想一下——那就是不连续的回文串,想到不连续,就容易使人想到最长公共子序列,把源字符串逆序之后对比两个字符串发现:我靠,这不就是求两个序列的最长公共子序列(好像跟回文串没多大关系)。

考察:回文串,动态规划,知识迁移

 1 #define M 100
 2 int dpLCS[M][M]; //设置成全局变量,自动初始化为0
 3
 4 //动态规划法:最长回文子串,有删除,其实就是求最长公共子序列
 5 int LongestCommonSequence(string str)
 6 {
 7     size_t n = str.size();
 8     if (n == 0 || n == 1)
 9         return 1;
10
11     string s = str;
12     reverse(s.begin(), s.end());
13
14     for (size_t i = 1; i <= n; ++ i) {
15         for (size_t j = 1; j <= n; ++ j) {
16             if (str[i-1] == s[j-1])
17                 dpLCS[i][j] = dpLCS[i-1][j-1] + 1;
18             else
19                 dpLCS[i][j] = max(dpLCS[i-1][j], dpLCS[i][j-1]);
20         }
21     }
22     return dpLCS[n][n];
23 }

第二个题:蛇形矩阵,又叫螺旋矩阵

题目:

解题思路:

解螺旋矩阵的切入点需要知道矩阵的个数,看下面一幅图:

如果是n = odd,则中间只有一个数,不算做一个矩阵,如果n = even,则中间是一个矩阵,总的矩阵个数为n/2,知道这一点,后面的工作就是分别从外向里遍历每一个矩阵即可。

 1 void HelixMatrix(int n)
 2 {
 3     int **a = new int *[n];
 4     for (int i = 0; i < n; i ++)
 5         a[i] = new int[n];
 6
 7     int m = 0;
 8     for (int k = 0; k < n/2; ++ k) { //n/2矩阵个数
 9         for (int i = 0; i <= n-1-k; ++ i)
10             a[k][i] = m++; //第一区块
11         for (int i = k + 1; i < n-1-k; ++ i)
12             a[i][n-1-k] = m++; //第二区块
13         for (int i = n-1-k; i > k; -- i)
14             a[n-1-k][i] = m++; //第三区块
15         for (int i = n-1-k; i > k; -- i)
16             a[i][k] = m ++; //第四区块
17         if (n%2 == 1)
18             a[n/2][n/2] = m; //n=odd,填充中间一个数
19     }
20     for (int i = 0; i < n; i ++) {
21         for (int j = 0; j < n; j ++)
22             cout << a[i][j] << " ";
23         cout << endl;
24     }
25     //释放a
26     for(int i = 0; i < n; i ++) {
27         delete [] a[i];
28     }
29     delete []a;
30 }

附:选择题部分整理

1、HTTP协议的请求类型,端口号,返回码等

2、在同一台机器上,内存访问,SATA硬盘随机访问时间分别是:(几十纳秒,几十毫秒)

3、E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)}的深度优先遍历序列

4、关于操作系统的说法正确的是:

  a、同一个线程内可以运行多个消息队列

  b、Windows中使用临界区,不需要切换到内核态

  c、互斥量可以用于多进程间对资源的安全共享

  d、信号量允许多个线程同时使用共享资源

5、页面采用click事件会存在300ms延时的原因

6、用0-9,a-z表示36进制的873085

7、冒泡排序,堆排序,归并排序,快速排序的时间复杂度

8、http的返回码101,404,502,200的含义

9、面向对象程序设计SOLID五大原则,各字母的含义

10、有关网络协议说法正确的是:
  A.UDP是无连接不可靠的,TCP是连接可靠的

  B.HTTP请求的类型有get, post, put, delete,head

  C.HTTP默认端口号为80,HTTPS默认端口号为443,FTP默认端口号为21

  D.根据HTTP规范,GET请求用于信息获取,并且应该是安全的和幂等的

11、两服务器相距1500km,一次ping请求耗时多长(4,8,16,32)

12、文件系统管理的最小磁盘空间单位(扇区,簇)

13、在移动端浏览器,页面采用click事件,会存在300ms的延迟,为什么?(要预先处理一些操作,还有判断是否是双击操作)

14、A和B玩纽扣游戏,一共16个纽扣,两人轮流来取,每人每次可以选取1个或3个或6个(不允许不取),规定谁取完最后的纽扣谁赢。如果让A先取,则A的必胜策略下第一步应该取?

腾讯2016春招之算法编程解析相关推荐

  1. 搜狗2016校园招聘之算法编程解析

    1.第一个题:最近邻居 题目: 解题思路: 1)这个题如果用java,相对会好解一些,因为可以直接用JDK中的Point2D类,来定义坐标系空间中的一个点. 2)简单思路:暴力破解,计算任意两个点之间 ...

  2. 腾讯 2015秋招笔试题 编程题2:九宫格填数

    腾讯 2015秋招笔试题 编程2:九宫格填数 题目 2: 有下图的题解,请用 C/C++ 代码来列出满足下图 0-100 内的所有答案. 配合加减乘除,使得九宫格横竖都等于4. 智力冲浪 数字推理 请 ...

  3. 腾讯2016春招安全岗笔试题解析

    腾讯2016春招安全岗笔试题解析 昨天(4月2日)晚上7:00到9:00做了腾讯春招安全岗的笔试题.下面解析一下: 题目解析 1 在生成随机数前用当前时间设置随机数种子应该是安全的.如果程序用固定的数 ...

  4. 腾讯2019春招一面(电话面试)

    腾讯2019春招一面 最近有许多事情,导致博客许久没更,所以先更个一面压压惊 这件事情的起源有些曲折,所以先做个背景介绍(推销自己一波) 本人在读大三学生一名(非985,211),前段时间不少的互联网 ...

  5. 决战春招!算法工程师面试问题及资料超详细合集(算法岗面经/代码实战/网课/竞赛等)...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! Awesome-AI-algorithm 目录 算法面试 1. Github 20 ...

  6. 旷视科技19届春招:算法研究员面经

    下面是旷视科技19届春招算法研究员真实面经 旷视研究院的校招流程比较复杂,三轮面试,每轮面试之后隔几天通知结果,通过之后约下一轮面试.每轮有一到两面. 前两轮通过,offer基本就稳了,因为第三轮是研 ...

  7. 华为2018春招笔试题目 字节流解析与长整数相乘

    基础知识杂烩: 字节也叫Byte,是计算机数据的基本存储单位, bit存储内容是0和1,bit是计算机中最小的储存单位 一个Byte是由8个bit组成,它是最小的可寻址单元 ,1个字节等于8位二进制. ...

  8. 京东2016春招(实习)笔试+编程题

    岗位:数据挖掘.机器学习.算法.模式识别 京东这套题出的耗时可以的,难度不是特别大,编程题感觉非常难理解,光看题干就看了老半天,当时简直吓尿了,一琢磨其实很简单.我只能回忆一部分内容,25选择+2编程 ...

  9. 腾讯2018春招实习生和秋招面试问题

    2018.04.18 首先,我先说说整个过程吧.(如果对过程不感兴趣的话可以直接拉到下面的面试题) 笔试(我觉得考的稀烂,以为没有面试机会的)结束后大概一周,下来了面试通知,下午三点半. 我从我们大学 ...

最新文章

  1. 外卖ERP管理系统(二)
  2. Visual C# 2010 实现资源管理器
  3. spring_security权限应用
  4. Linux Shell History (快速使用Linux命令)
  5. 学习linux之用户-文件-权限操作
  6. 01.query的分类-条件查询和组合查询
  7. 六.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---4.laserMapping.cpp--后端建图和帧位姿精估计(优化)
  8. Vue.js自定义指令的用法与实例
  9. Windows 使用 Detours 进行 HOOK
  10. js中字符串按照汉字拼音排序
  11. 宏定义是什么?为什么要进行宏定义?宏定义的格式
  12. 面向对象版学员管理系统 Python
  13. python的spider程序下载_Python Spider
  14. 微信网页中点击图片放大
  15. Qt使用 QProcess来检测 ip 设备是否在线(Ping)
  16. 【面试招聘】超强整理,非科班小硕的进击之路
  17. ORACLE学习笔记(6)(分析函数)
  18. Response.Redirect引起System.Threading.ThreadAbortException
  19. 中天视听王 未来软件园
  20. 数控机床的基本组成包括哪些?

热门文章

  1. NGINX生命周期-转
  2. 基于redis 内存数据库简单使用
  3. [导入]C#实现Des加密和解密
  4. linux四种集群是什么,lvs四种集群特点及使用场景
  5. ARM(IMX6U)BSP工程文件管理(分文件编程)
  6. php获取页面的可视内容高度,网页制作技巧:获取页面可视区域的高度_css
  7. linux 文件夹换所属用户,linux普通用户su root切换提示没有文件或目录的解决方法...
  8. Win11系统各个版本之间的比较,看完你就懂了!
  9. 数据库技术基础:数据库管理系统的功能介绍笔记
  10. 数据结构基础:算法的基础知识笔记