0
点赞
收藏
分享

微信扫一扫

算法题总结(三)

guanguans 2022-04-23 阅读 64
c++面试

按照数据结构分类

(三) 遍历vector的问题

1、 顺时针打印矩阵/螺旋矩阵

  • 按层打印,向中间收缩,for循环的条件会变,所以要注意判断条件非固定值。

2、 数组中出现次数超过一半的数字

  • 将vector的值读进哈希表
 unordered_map<int,int> counts; counts[nums[i]]++; 

3、 输入整数数组 arr ,找出其中最小的 k 个数

  • vector的排序函数sort(arr.begin(), arr.end());,从小到大排

4、 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)

  • 滑动窗口(双指针)——何时移动i,何时移动j,跳出循环的条件(while)

5、 从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子

  • 排序sort(arr.begin(), arr.end());+遍历for。
  • 判定条件:无重复且max-min<5(数学思维)

6、 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个

  • 使用内置排序函数或者是自己实现快速排序
举报

相关推荐

0 条评论