cpp选手备战后端学习笔记day6 秋招笔试题

1.秋招真题

给定一个数字n,你需要给出用1-n这几个数组组成的数组,要求这个数组的所有非空子数组的和最大,所谓的非空子数组就是指连续的非空的一段,可以是其中一个,可以是两个

问题:时间复杂度超过,只18.88%

我是使用的比较判断实际上,最终的结果是中间的数字要尽可能大,就把1在最左,2在最右,3在最左这样去解决

实际每个数a_1 a_2... a_n

a_i计算了i*(n-i+1)

思路:要让一个数组包含a_i,左端点可以选择的有a1-ai共i个,右端点是ai到an共n-i+1个。

2.剑指offer不熟悉题目总结

a.反转链表 难易度*

这道题主要是用三个指针,分别记录当前节点、当前节点前面一个、当前节点下面一个

b.判断二叉树的子结构 难易度***

考察的是对于递归的判断,使用两个函数,一个函数用于当前大树的节点值和子树根相等时,去调用另一个,另一个就是判断是否完全相等。

两个函数的作用分别是递归大树当前节点为根的树和另一个树是否有完全相同的结构,且就是以这个节点为根,另一个是判断相等。

在第二个函数要判断两个空指针,要判断节点值是否相等,要判断左右子树。

c.给定一个链表和链表中节点,删除这个节点 难易度***

考察的是怎么对单链表理解,最直观的是遍历到前面删,另外一种就是用后面一个覆盖这个的值,再删除,需要特殊考量的是只有一个节点、链表不存在、删除的是最后一个节点。

d.删除单链表倒数第k个节点 难易度***

考察对于双指针的使用,先让快指针移动k个,然后两个同时移动,直到快指针到达结尾。

需要特殊考量的是k=0没有意义,链表没有k个节点、链表不存在。

最常规的思路是先遍历一遍计数有多少节点,再删除,但是这样的话,统计遍历一遍,删除遍历一遍,需要遍历两次链表。

e.把数组中的奇数都移动到前面,偶数都移动到后面 难易度*

考察的是对于双指针的思想的使用,这里主要是使用索引,一个从前往后,一个从后往前。

相关推荐
La Pulga2 小时前
【FreeRTOS源码学习笔记】任务延时列表
笔记·mcu·学习·嵌入式·freertos·实时操作系统
楚山之石4 小时前
【JCO】mpMRI 先行替代 TURBT 初始分期:BladderPath 随机试验让 MIBC 患者提前 45 天得到正确治疗
人工智能·学习·mri·医学影像
Peter-OK7 小时前
PostgreSQL学习笔记(入门-进阶-精通说明)
笔记·学习·postgresql
承渊政道7 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
橙橙笔记9 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能
成都蜀味缘餐饮技术培训学校9 小时前
手撕烤兔技术培训实战指南,秘制腌料配方比例与调制手法
大数据·经验分享·笔记·其他·微信公众平台
希和202710 小时前
免费AI视频生成工具汇总(国内优先,适合做漫剧、短视频,Obsidian笔记版)
人工智能·笔记·音视频
蒸蒸yyyyzwd11 小时前
秋招学习笔记 day109
笔记·八股
Hhy_110712 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
山甫aa13 小时前
锁一篇搞定:乐观锁、悲观锁、CAS、数据库锁与分布式锁【从零开始的 Web 后端学习】
java·数据库·分布式·后端·学习·web