[算法上]3. oj题目讲解

599.两数之和


1.暴力枚举O(n2)

2.二分O(nlogn),固定1个数,二分找余数

3.双指针法O(n),对称的杨氏矩阵找2个数

4.哈希表O(n)+O(n),固定1个数,用哈希表找余数

  1. 哈希表是映射
  2. 后期用容器代替标记数组
  3. cin有超时可能,scanf读入

600.杨氏矩阵(满足特定单调性的二维数组 )

  1. 暴力O(m * n)
  2. 做法:以左下角为起点遍历,小于则右移,大于则上移,时间复杂度为o(m + n)
  3. 从右上角同理
  4. 两数之和的双指针,本质上是 杨氏矩阵 的左下角/右上角的 行数和列数

477.元音字母

  1. 扫一遍字符串,找到上一个元音字母位置,每碰到一个元音字母,更新答案
  2. 位置初始值设为-1

479.乒乓球

在这里插入图片描述
在这里插入图片描述

  1. 每行至多 25 个字母,最多有 2500 行
    分析:假如都是一个人赢了,一共62500分,11分6000局结束,21分3000局结束,多少局是个变量,要统计E

480.保龄球

在这里插入图片描述
在这里插入图片描述

481.冰壶比赛

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

484.柱状统计图

在这里插入图片描述


485.均分纸牌

在这里插入图片描述

  1. 从左到右一个一个去保证,最后一个一定就是avg

503.独木舟

在这里插入图片描述
在这里插入图片描述

  1. 代码中最小+最大<=w时才 l++,否则只是ans++,r–

504.删数

在这里插入图片描述
在这里插入图片描述

  1. 若使数尽可能小,高位数必须小
    遍历大整数的每两位,满足小数在前大数在后,不满足时删掉前面大数,记录删除的数
    遍历完成后删除的数不够,从后往前删除掉剩余的位数
  2. char n[245];大整数不能用字符数组读入,用字符串读入
  3. 【注意】同理,字母组成的字符串求最小的字典序字符串

505.最大整数

在这里插入图片描述

  1. 按数字大小排序、按字典序排序都不对(举例96、121、12)
  2. a+b > b+a 表示前者连接后的字典序大于后者

506.打热水

在这里插入图片描述

  1. 结构体定义
  2. 排序从1开始
  3. 格式化输出

508.两人过河

在这里插入图片描述

  1. 四个人以上时,把 [最慢次慢] 送过桥有2种方式

    1. 手电传递效率最高,num[1]当工具人,最快最慢,最快,最快次慢,最快
    2. 过桥效率最高,最快次快,最快,最慢次慢,次快
  2. 4人以上有两种方法的原因是:num[0] < num[1] < num[i - 1], 但是 2num[1] 和 num[0] + num[i - 1] 的大小关系不确定


509.智力大冲浪

在这里插入图片描述
在这里插入图片描述

  1. 优先完成扣钱多的任务
  2. 尽可能靠后完成(每个任务都有截止时间,前面的时间任务会扎堆)

514.火柴棒等式

在这里插入图片描述
在这里插入图片描述


515.比例简化

在这里插入图片描述


516.奶牛碑文

在这里插入图片描述

  1. 明确对于每一个位置的O,前后各有多少个C、W
  2. 对于C用数组进行记录,对于W可以边统计边计算ans
  3. 对于寻找“PUSH”问题,参考2-sum问题的思想,时间复杂度o(n2)

517.三角形个数

在这里插入图片描述

  1. 求不一样的三角形,第一轮遍历最短边,第二轮遍历次短边
  2. 最短边长度1~n/3,最长是等边三角形
  3. 中等边长度i~(n-i)/2,最短等于最短边长度,不能比最短边短;最长等于剩余长度/2,否则就是最长边

519.优雅数

在这里插入图片描述

  1. 思路1:枚举L~R之间的每个数,判断是否是优雅数,数据范围1016明显不可行
  2. 思路2:枚举每个优雅数,判断是否是在L~R之间
  3. 优雅数:一个数是几,一堆数是几,数字长度,一个数在数字中的位置,然后构造
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值