• 遇到这些题你知道用什么来解么?


    150. 逆波兰表达式求值 - 力扣(LeetCode)
    看题解前:折磨致死,各种问题,什么转整形啊,int不够啊。思路,用map和包装器封装四则运算,利用一个栈,遇到数字的时候把数字入栈,遇到操作符弹出两个数字进行运算,然后将结果入栈到栈中,最后返回栈顶元素即可。
    需要注意的点:
    1、给的是一个字符,转化成整形需要-'0’或者调用stoi
    2、给定的测试用例数据很大,int放不下,改用long long才给通过(有点恶心)

    看题解后:整体思路差不多,也是用栈 实现,然后用if判断是哪个操作符进行操作

    239. 滑动窗口最大值 - 力扣(LeetCode)
    看题解前:看起来还是比较简单,用result数组拷贝nums的数据,然后再利用一个tmp数组保留窗口内的数据,对tmp排序(默认升序),将tmp最后一个元素放到result中下标为begin的位置,最后的结果肯定是nums的数据个数减去k再加1,直接对result数组resize返回即可。
    举个例子:nums = [1,3,-1,-3,5,3,6,7], k = 3
    1、begin=0,end=3
    result = 1,3,-1,-3,5,3,6,7
    tmp = 1,3,-1 排序后-1,1,3
    3插入到result中begin位置
    result = 3,3,-1,-3,5,3,6,7
    begin,end++
    2、begin=1,end=4
    result = 3,3,-1,-3,5,3,6,7
    tmp = 3,3,-1 排序后-1,3,3
    3插入到result中begin位置
    result = 3,3,-1,-3,5,3,6,7
    begin,end++
    3、begin=2,end=5
    result = 3,3,-1,-3,5,3,6,7
    tmp = -1,-3,5排序后-1,-3,5
    5插入到result中begin位置
    result = 3,3,5,-3,5,3,6,7
    begin,end++
    依次类推即可,最后对result数组记得resize。
    然后代码没过,超时了,应该是效率问题,也没有想到更高效的解法了只能看题解。

    看题解后:使用deque构造了一个单调队列(从大到小),保证队列中都是由大到小的,窗口移动的时候如果push的数值大于入口元素的数值,那么就将队列后端的数值弹出,直到push的数值小于等于队列入口元素的数值为止。就可以保证该队列的front为当前最大元素,怎么做到的,简单讲解下我理解到的
    1,3,-1,-3,5,3,6,7,k=3
    1、先将第一个窗口的3个元素依次插入到队列q1;1直接插入,3插入时大于入口数值,先pop到入口树脂大于等于3或者为空位置,此时pop出1然后push进3,-1小于3直接push进去。q1=3,-1
    2、窗口移动,如果左侧窗口移出的数值等于q1入口的数值,则q1需要pop,否则不需要pop操作,然后按上述规则将右侧窗口移进的数值push到q1。-3小于q1入口直接插入
    q1=3,-1,-3
    3、循环操作;5大于入口数值,q1进行pop操作,直到入口数值大于等于5为止,然后插入5,q1=5;3小于5直接插入,q1=5,3;6大于5,先pop再插入,q1=6;7大于6先pop再插入,q1=7;
    把q1都单独拿出来
    q1=3,-1
    q1=3
    q1=5
    q1=5
    q1=6
    q1=7
    可以看到q1每次入口数值即为该对应窗口的最大值,保存即可求解。

    347. 前 K 个高频元素 - 力扣(LeetCode)
    看题解前:蛮简单的,用map统计次数,然后vector拷贝map数据,再用一个仿函数进行排序,取将前k个高频的vecotr数据再插入到resul即可。

    看题解后:同样使用map统计次数,然后用了一个小顶堆来排序,也就是优先级队列,保证自己为一个大小为k的堆同时会自动进行排序,就是记得自己写个仿函数,主要是优先级队列自己使用的比较少所以没想到。

  • 相关阅读:
    Python Opencv实践 - 视频文件操作
    使用 Bitnami PostgreSQL Docker 镜像快速设置流复制集群
    Linux---进程/磁盘管理
    了解世界杯赔率,让您运气更‘好‘(个人分享)
    Kotlin学习笔记(1)-- 基础语法
    【性能测试】分布式压测之locust和Jmeter的使用
    【Spring boot 读取系统环境变量】
    灯光烘焙注意事项
    Oracle和MySQL的基本区别(入门级)
    2022金九银十 —— 招聘有感,给各位测试同学的一些建议
  • 原文地址:https://blog.csdn.net/l50153/article/details/127424918