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],等于的话队首出队。

    链表

    二叉树

    递归

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

    动态规划

    字符串

    大数据和空间限制

    位运算

    数组和矩阵

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

    其他

  • 相关阅读:
    PHP 语法
    PHP 安装
    06_传智播客iOS视频教程_方法的本质是SEL消息
    05_传智播客iOS视频教程_类对象的使用
    04_传智播客iOS视频教程_类是以Class对象存储在代码段
    03_传智播客iOS视频教程_作业讲解及结构体与类的区别
    02_传智播客iOS视频教程_子类在内存中的存储和方法调用过程
    01_传智播客iOS视频教程_课程介绍与知识点回顾
    Day01-Objective-C语法基础-video 01_传智播客iOS视频教程_OC的简要历史
    17_关于上下文的说明
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/11191957.html
Copyright © 2011-2022 走看看