算法与数据操作也是面试时经常问到的题目。很多算法都有递归和循环的实现,同时查找和排序也是很基础的内容,除此之外,回溯法、贪心法、动态规划等针对一类问题的算法都是非常重要的。 --> 回溯法 回溯法可以看作蛮力法的升级版,它从解决问题每一步的所有可能选项里系统地选出一个可行的解决方案。 回溯法非常适合由多个步骤组成的问题,并且每个步骤都有多个选项。当我们在某一步 ...
算法与数据操作也是面试时经常问到的题目。很多算法都有递归和循环的实现,同时查找和排序也是很基础的内容,除此之外,回溯法、贪心法、动态规划等针对一类问题的算法都是非常重要的。 --> 1 递归与循环 通常基于递归的代码比较简洁,也比较容易实现,但性能却不如基于循环的实现方法,因为递归时会存在额外的函数调用,内存栈操作以及重复计算,甚至有时会出现调用栈溢出的情况。 ...
算法与数据操作也是面试时经常问到的题目。很多算法都有递归和循环的实现,同时查找和排序也是很基础的内容,除此之外,回溯法、贪心法、动态规划等针对一类问题的算法都是非常重要的。 --> 1 排序 插入排序、冒泡排序、归并排序、快速排序的特点及分析。 1.1 插入排序 插入排序的思想是通过构建有序序列,对未排序的序列,在已排序的序列中从后往前扫描,找到 ...
作为一名程序猿,想在面试的时候游刃有余,首先要熟练掌握数组、字符串、链表、树、栈、队列这几种基础的数据结构。 --> 1 树 树的结构:除根节点外每个节点只有一个父节点,根节点没有父节点;除叶节点外每个节点只有一个或多个子节点,叶节点没有子节点。父节点和子节点用指针链接。 树的遍历:前序遍历、中序遍历、后序遍历,其递归和循环实现都要熟练掌握。此外还有广度优先遍 ...
作为一名程序猿,想在面试的时候游刃有余,首先要熟练掌握数组、字符串、链表、树、栈、队列这几种基础的数据结构。 --> 1 栈与队列 栈是一个非常常见的数据结构,其特点是先进后出,操作系统在函数调用便会使用栈结构。 栈是一个不考虑排序的数据结构,因此查找最大最小元素的时间复杂度为 O(n),若想要在 O(1) 时间内得到栈的最大最小值,则需要对栈做特殊的 ...