算法题总结(三)

按照数据结构分类

(三) 遍历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、 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个

  • 使用内置排序函数或者是自己实现快速排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值