日常练习:C++编程题

article/2024/4/19 23:39:58

1.数对 

  • 纯数学,推公式

2.除自身数组以外的乘积

  •  数组before记录每个数字之前的积
  • 数组end记录每个数字之后的积

3.圣诞树

  • 这道题的特殊情况不好解决,用了个int m = n,后面用m--控制特殊情况的个数 

4.超级圣诞树 

  • 有一点难 

5.回型矩阵 

  • a[i][++j],                 a[++i][j],                  a[i][--j] ,                 a[--i][j] 
  • while控制循环,i和j来回交替变化

6.蛇形矩阵

  •  while控制循环,i和j来回交替变化

7.小q的数列

  •  f(n) = 这个数二进制中1的个数
  • n` = 2 * (这个数二进制中1的个数) - 1

8.大吉大利,今晚吃鸡

  • 动归问题,重点是状态转义方程 dp[i] = dp[i-1] * 3 + 2;

9.配对交换

  •  将一个数 & 0x55555555 得到奇数位
  • 将一个数 & 0xaaaaaaaa 得到偶数位

10.阶乘尾数

  • int count = 0;// 记录5^i出现的个数
  • 要产生10,100,1000,必定会出现5,25,125

11.求1+2+3+...+n 

  • 变长数组C++中类的构造函数就可以解决问题

12.数列 

  • 输入项的最大值作为边界,只建立一次vector

13.搜索旋转排序数组 

  • 先判断左半段是否有序
  • 如果目标值在左半段则r = mid - 1,锁定左半段
  • 如果目标值不在左半段则l = mid + 1,

14.从链表中删去总和值为零的连续节点

  • 这里需要自己设计一个哨兵位,使用unordered_map

15.从根到叶的二进制数之和 

  •  二进制转换成整数的关键: sum = sum * 2 + root->val;

16.二叉树的坡度 

  • 在这道题中, 需要返回根和左右子树

17.奇偶树 

  • 层次遍历,将每一层的数据都入列。对每一层的数据分析是否满足条件即可
  • 创建数组queue,分别用frontrear来维护队列的首尾,k表示奇偶,flag表示单调
  • push进去元素后,rear++,相当于元素入列
  • front = rear(++之前的),相当于元素出列

18.字符串相乘

  • 这道题需要模拟实现乘法的过程,逆置->一个一个的乘->不断的累加 

19. 杨辉三角

  •  resize开空间和初始化,front返回第一个元素的引用,back返回最后一个元素的引用

20.电话号码的字母组合 

  •  通过循环控制递归

21.最小栈 

  •  一个普通的栈
  • 一个最小栈,保留每次插入的数比栈顶元素小于或等于的数
  • 在使用栈.top()时,栈的元素必须不为空,否则报错

22.栈的压入、弹出序列 

23. 逆波兰表达式求值

         

  •  操作数入栈
  • 操作符,取栈中的两个操作数进行运算,然后再放回栈中

23.字符串相乘

  •  只需要在一个string中操作就行了,并解决2个特殊情况

24.二叉搜索树与双向链表 

  •  需要定义一个prev找节点的上一个

25.二叉树的最近公共祖先 

  •  利用存节点的路径,找到了直接返回
  • 一个节点的左右子树中都没有目标节点,则在路径中去掉这个节点

26. 任务调度器

  • 利用桶的思想, 最短时间 = max(情况一,情况二)

27.适龄的朋友

  •  桶排序,将年龄相同的放入一个桶中,
  • 先算年龄相同的,再计算桶间的(利用条件一,二的范围)

28.快照数组 

使用数据结构:unordered_map<int, map<int, int>> mp; // 分别存储索引,快照号,修改之后的值 

  • 定义一个数组存放每个下标在每个snap下的值
  • 初始化数组为0
  • set数组时, 将对应的下标和snap的值进行修改
  • snap时,只增加snap_id
  • get是, 使用二分法,查找对应下标下的小于等于snap_id的值.

28.LRU缓存  

 

 

  •  使用哈希链表解决,哈希查找O(1),链表插入删除O(1)

29.Excel表格名称

  • 这是一道从 1 开始的 26进制转换题。 

  • 进制转化前: 先执行减一操作,从而实现整体偏移


http://www.ngui.cc/article/show-861329.html

相关文章

前端面试记录(一)

面试时间&#xff1a;2023年2月3日14:00 前端实习 感想&#xff1a;第一次面试&#xff0c;没想到就面了个大厂&#xff08;非头部大厂&#xff09;&#xff0c;0面试经验也非常紧张&#xff0c;看了一上午面经也没记住多少东西。其实问的问题非常简单&#xff0c;但是计算…

高码率QPSK调制解调方案(2.1 QPSK调制)

2 全数字高码率QPSK调制解调软件设计 2.1 QPSK调制 2.1.1 QPSK调制原理 QPSK调制即正交相移键控信号,其信号表达式为 (1) 其中,和分别表示每比特的能量和持续

第6章 Linux 系统目录结构教程

Linux 系统目录结构 登录系统后&#xff0c;在当前命令窗口下输入命令&#xff1a; ls / 帅哥您会看到树状目录结构 以下是对这些目录的解释&#xff1a; /bin&#xff1a; bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot&#xff1a; 这里存…

上市条件 - 打造企业上市系列文章

一、只有股份公司才具备上市的资格; 二、申请上市公司&#xff0c;公司经营必须是3年以上&#xff0c;在这三年内没有更换过董事、高层管理人员、并且公司经营合法、符合国家法律规定; 三、上市公司的注册资金无虚假出资&#xff0c;没有抽逃资金的现象; 四、上市公司的注册资金…

03俯瞰全局:gRPC是如何进行通信的

gRPC作为Web网站和APP后端的最常用服务提供方式之一和分布式微服务架构不同节点间的最常见通信方式之一,它自身是如何进行通信的呢,这个问题就是我们本篇文章将要研究的重点,先从全局的角度分析gRPC服务端和客户端进行通信的主要流程,再从细节剖析gRPC是如何进行高效的远程…

Kafka入门(一)

1、Kafka简介 Kafka是一个分布式的基于发布/订阅模式的消息队列&#xff08;Message Queue&#xff09;&#xff0c;主要应用于大数据实时处理领域&#xff08;hadoop集群&#xff09;、物联网领域。其主要设计目标如下&#xff1a; 以时间复杂度为O(1)的方式提供消息持久化能…

【实际开发12】- 经验 experience

目录 1. 经验 experience 1. 无多大价值 , 停留数据展示层面 2. 保证数据一致性问题 3. 新增时 , 可先关注核心基础数据 ( 复杂数据以修改形式完善 ) 4. 新增 / 修改 ( 幂等性处理 ) 5. 增 / 删 / 改 添加日志 , 查询无需日志 6. 需要对接多模块的通用字段设计 : String…

值得拥有并收藏的 3个安卓/鸿蒙手机解锁软件

手机无论支持哪种操作系统&#xff0c;都占据了每个人口袋里的空间。随着大量移动设备的使用&#xff0c;搜索引擎上也出现了同样数量的查询&#xff0c;其中最常见的是提供安卓/鸿蒙屏幕锁定删除工具。由于安卓是当今最畅销的设备&#xff0c;我们的首要任务是为您提供最好的安…

并发编程学习案例-ReentrantReadWriteLock非公平的情况下读锁插队和写锁插队场景复现

文章目录一、前言二、源码三、 代码案例&#xff08;一&#xff09;复现写的时候插队场景参考执行结果&#xff08;二&#xff09;复现读的时候插队参考执行结果参考资料一、前言 Java ReentrantReadWriteLock 是 ReadWriteLock 的实现类&#xff0c;可以分出2把锁&#xff0c;…

2023年深圳CPDA数据分析师认证将于2/25正式开班,快来报名

CPDA数据分析师认证是中国大数据领域有一定权威度的中高端人才认证&#xff0c;它不仅是中国较早大数据专业技术人才认证、更是中国大数据时代先行者&#xff0c;具有广泛的社会认知度和权威性。 无论是地方政府引进人才、公务员报考、各大企业选聘人才&#xff0c;还是招投标加…