剑指Offer
文章平均质量分 78
try_again_later
在读硕士,高精度建图定位方向。
知乎专栏:《视觉、激光SLAM源码详细解析》
展开
-
LeetCode 排序
0 目录242有效的字母异位词349 两个数组的交集(重复/无重复)56 合并空间75 颜色分类242 有效的字母异位词方法一:sort函数排序思路:将s和t重新排列,如果t是s变位词,排序后将产生两个相同的字符串。class Solution {public: bool isAnagram(string s, string t) { ...原创 2019-07-26 10:26:18 · 505 阅读 · 0 评论 -
《剑指Offer》 目录
链表总结篇递归总结篇动态规划(基于递归的循环)二叉树遍历(前中后序、广度优先、深度优先)查找:二分查找、哈希表、二叉搜索树排序算法...原创 2019-07-18 20:18:49 · 474 阅读 · 0 评论 -
动态规划解决TSP问题(代码可运行)
一、Tsp问题假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。先生成相互距离二维表二、动态规划设s, s1, s2, …, sp, s是从s出发的一条路径长度最短的简单回路,假设从s到下一个城市s1已经求出,则问题转化为求从s1到s的最短路径,显然...转载 2019-07-03 10:28:31 · 13977 阅读 · 3 评论 -
《剑指 Offer》 查找:二分查找、哈希表、二叉搜索树
0前言11 旋转数组的最小数字 53 数字在排序数组中出现的次数 50 第一个只出现一次的字符查找算法二分查找11 旋转数组的最小数字题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所...原创 2019-06-04 20:58:47 · 278 阅读 · 0 评论 -
《剑指Offer》 排序算法
0 前言简单排序:直接插入、直接选择、冒泡 O(n2)优化排序:希尔排序、堆排序、快速排序 O(N log N)归并排序。要能够从时间复杂度、空间复杂度比较优缺点。39 数组中出现次数超过一半的数字 40 最小的k个数 41 数据流中的中位数39数组中出现次数超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长...原创 2019-06-13 11:37:51 · 226 阅读 · 0 评论 -
《剑指Offer》二叉树遍历(前中后序、广度优先、深度优先)
0前言7 重建二叉树(递归) 8 二叉树的下一节点 26 树的子结构(递归) 27 二叉树的镜像(递归) 28 对称的二叉树(递归) 32 从上到下打印二叉树(广度遍历) 33二叉搜索树的后序遍历序列(递归) 34二叉树中和为某一值的路径(深度遍历、前序遍历首先访问根节点) 37 序列化二叉树(前序遍历)、反序列化二叉树 55 二叉树的深度7 重建二叉树题目描述...原创 2019-05-31 16:50:41 · 422 阅读 · 0 评论 -
《剑指Offer》动态规划(基于递归的循环)
0 前言:递归本质是把复杂问题分解成多个简单小问题。但是如果小问题中有相互重叠部分,时间效率会很差。所以应该是以递归的思想用循环的方法实现(从上往下分析问题,从下往上求解问题)。动态规划:求解最优解时,分解大问题为小问题,然后求每个小问题的最优解,把子问题最优解存储下来(一维或二维数组)。动态规划方法仔细安排求解顺序,对每个子问题只求解一次,并将结果保留下来.如果随后再次需要此子问题的...原创 2019-04-13 22:54:27 · 382 阅读 · 0 评论 -
for循环省略、if...else if与if...if区别
复习第一题:二维数组中的查找时在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。LZ 遇到了这样的代码:class Solution {public: bool Find(int target, vector<vector<...原创 2019-03-03 16:24:52 · 1615 阅读 · 0 评论 -
《剑指Offer》 链表总结篇
数据结构和算法,是程序设计中重要的两大组成部分,我们的编程都是在选择和设计合适的数据结构存放数据,然后再用合适的算法处理这些数据。链表是一种动态的数据结构,每次插入一个结点,只需为其分配内存然后保证节点指针域指向新的节点。0.摘要定义、插入节点、删除节点 6 反向遍历链表(栈、递归、反向迭代器) 18 删除链表的节点 22 输出链表中倒数第K个节点(遍历两次O(m+n)、滑动窗O...原创 2018-11-30 10:05:32 · 270 阅读 · 0 评论 -
《剑指Offer》 递归总结篇
反向遍历链表 翻转链表 合并两个排序的链表0、基础基本思想,是把规模较大的一个问题,分解成规模较小的多个子问题去解决,而每一个子问题又可以继续拆分成多个更小的子问题。最重要的一点就是假设子问题已经解决了,现在要基于已经解决的子问题来解决当前问题;或者说,必须先解决子问题,再基于子问题来解决当前问题。【A】----依赖---->【B】----依赖---->【C】...原创 2018-12-02 10:11:46 · 255 阅读 · 0 评论