zoukankan      html  css  js  c++  java
  • [程序员代码面试指南]总结(待更新)

    栈的基本操作

    • 题目:栈的压入、弹出序列[剑指Offer]
      题解:理解题目即可。

    辅助栈:作用:1.翻转 2. 与栈配合,同序保存栈每一状态对应的东西。

    • 题目:两个栈实现队列 [剑指Offer][思路]
      题解:入队push:正常;出队pop:从辅助栈pop。(pop时若辅助栈为空,则把栈顶元素依次移到辅助栈)

    • 题目:包含min函数的栈 [剑指Offer][思路]
      题解:辅助栈存最小元素,栈顶为当前最小元素。(注意辅助栈开始为空的情况)

    单调栈:作用:维护以某个值为最小(最大)值的最大区间。

    • 单调栈实现方法:求最小值(最大值)的最大区间,维护一个递增(递减)的栈,当遇到一个比栈顶小的值的时候开始弹栈,弹栈停止的位置到这个值的区间即为此值左边的最大区间;同时,当一个值被弹掉的时候也就意味着比它更小(更大)的值来了,也可以计算被弹掉的值得右边的最大区间。
    • 题目:找到数组中每一个元素离它最近且比它小的元素位置,返回二元数组。[思路]
      题解:维护单调栈,由底到顶严格递增。栈顶元素弹出时,栈里顶端元素和当前要入栈的元素即为符合条件的两元素。此外,当加入完成后弹出栈里元素,右侧均为-1。

    队列

    辅助队列

    • 题目:两个队列实现栈 [剑指Offer]
      题解:push:正常;pop;把队列前面的元素入到辅助队列,再把队尾元素pop

    单调队列(双向链表LinkedList实现):作用:维护区间内的最大值/最小值。

    • 单调队列是单调递增或者是单调递减的一种队列。例如一个递增队列,若将数列1 6 5 3 8放入队列中,则队列的每一步变化为:1、1 6、1 5、1 3、1 3 8 。每当放入的元素使得队列不在单调,则弹出队尾的元素,直到使得队列元素单调。
      maxQue.pollLast()
      maxQue.addLast()
      maxQue.peekFirst();
      具体题目中,队尾的出入队满足单调队列的操作,队首的出队则主要是判断队首是否还在当前有效窗口内。

    • 题目:生成滑动窗口最大值数组。[思路]
      题解:维护单调递减队列,队首维护当前窗口最大元素。新元素的入队满足单调递减队列的入队方式,小于队尾元素则直接入队,大于则弹出队尾元素。
      为判断队列中的元素一直在滑动窗口内,队列存元素在数组中的位置而不是大小,当队首与队尾元素差值大于窗口大小,则队首出队。

    • 题目:最大值减去最小值 小于或等于num 的子数组的数量[实现]
      题解:分析题目,有结论:

      • 如果数组arr[i...j]满足条件,则它的每一个子数组都满足条件。
      • 如果数组arr[i...j]不满足条件,则包含它的每一个数组都不满足条件。
        数据结构:用i、j表示当前窗口,分别使用两个双端队列维护窗口的最大值和最小值
        具体地,每次更新两个双端队列,检查当前的窗口是否满足条件,满足则j++,不满足则cnt+=j-i,更新双端队列,i++,j不变。若j到了len,则当前趟和剩余未遍历的都满足条件,加到cnt中。
        与生成滑动窗口最大值数组不同的,队首出队判断:当i要i++时,判断单调队列中队首是否等于arr[i],等于的话队首出队。

    链表

    二叉树

    递归

    • 题目:仅用递归函数实现栈的翻转 [实现]
    • 题解:看代码。两个递归函数。第一个递归函数实现弹出栈底元素:弹出-递归-放入。第二个递归函数利用第一个递归函数实现栈的翻转:弹出栈底-递归-放入。

    动态规划

    字符串

    大数据和空间限制

    位运算

    数组和矩阵

    • 题目:对给定数组,求最长连续递增子序列的长度
      题解:简单,遍历一遍维护最大长度即可。

    其他

  • 相关阅读:
    jackson 枚举 enum json 解析类型 返回数字 或者自定义文字 How To Serialize Enums as JSON Objects with Jackson
    Antd Pro V5 中ProTable 自定义查询参数和返回值
    ES6/Antd 代码阅读记录
    es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
    Antd Hooks
    使用.Net Core开发WPF App系列教程(其它 、保存控件内容为图片)
    使用.Net Core开发WPF App系列教程( 三、与.Net Framework的区别)
    使用.Net Core开发WPF App系列教程( 四、WPF中的XAML)
    使用.Net Core开发WPF App系列教程( 二、在Visual Studio 2019中创建.Net Core WPF工程)
    使用.Net Core开发WPF App系列教程( 一、.Net Core和WPF介绍)
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/11191957.html
Copyright © 2011-2022 走看看