![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指Offer
小楼野马
百二秦关终属楚!
展开
-
剑指Offer:数组中的逆序对
剑指Offer:数组中的逆序对 题目 插入排序解法(复杂度过高) 这个方法不能 AC,运行结果是: 运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。 case通过率为75.00% 什么还是写在这里吧... 代码如下: class Solution { public: int InversePairs(vector<int> data) { ...原创 2019-08-23 21:23:29 · 130 阅读 · 0 评论 -
剑指Offer:二叉树的深度
剑指Offer:二叉树的深度 题目 分析 简单的递归 代码 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public:...原创 2019-08-24 09:39:56 · 115 阅读 · 0 评论 -
剑指Offer:平衡二叉树
剑指Offer:平衡二叉树 题目: 分析 平衡二叉树:它是一棵空树,或者它的左右子树的高度差的绝对值不超过 1,并且它的左右子树也是平衡二叉树。 解法一 我能想到的最直接的递归解法如下: class Solution { public: map<TreeNode*, int> node_deepth; bool IsBalanced_Solution(TreeNod...原创 2019-08-24 11:19:12 · 97 阅读 · 0 评论 -
剑指Offer:数组中只出现一次的数字
剑指Offer:数组中只出现一次的数字 题目: 我的解法 我的愚蠢蠢蠢蠢解法:先快速排序,然后用栈找只出现一次的数字。 class Solution { public: void FindNumsAppearOnce(vector<int> data, int* num1, int *num2) { if (data.empty()) return; ...原创 2019-08-24 15:08:06 · 171 阅读 · 0 评论 -
剑指Offer:把数组排成最小的数
把数组排成最小的数 题目描述 分析 这道题 Get 到了一个新技巧:自定义排序方式! 对于任意两个数字 A 和 B,如果拼接成的字符串 AB 小于字符串 BA,则认为 A<B 按照这样的方式排序,再将排序后的 vector 转换为数字就可以了。 多么神奇,原来还可以这样子。 代码 class Solution { public: string PrintMinNumber(vector&l...原创 2019-08-23 12:39:07 · 70 阅读 · 0 评论 -
剑指Offer:整数中 1 出现的次数
这里定义目录标题剑指Offer:整数中 1 出现的次数题目分析代码 剑指Offer:整数中 1 出现的次数 题目 分析 就是总结数学规律。 分解让复杂问题变简单。 对于任意给定的 N,分别分析从 1 到 N 在不同位置(个位、十位、百位……) 上累计出现的 1 的个数。 代码 正在写 ...原创 2019-08-23 11:08:32 · 73 阅读 · 0 评论 -
剑指Offer:丑数
剑指Offer:丑数 题目 分析 真的是先写在纸上再敲代码脑子会清晰很多很多。 代码 class Solution { public: int GetUglyNumber_Solution(int index) { // 丑丑的小楼野马求丑丑的丑数 if (index <= 0) return 0; vector<int&g...原创 2019-08-23 13:21:12 · 97 阅读 · 0 评论 -
剑指Offer:第一个只出现一次的字符
剑指Offer:第一个只出现一次的字符 题目: 分析 就是建立哈希表。 三元组向量 vec: <字符,出现的次数,第一次出现的位置> (map<char, pair<int, int> >) 遍历 string 中的字符,修改或新增 vec 中的元素。 string 遍历完了之后,再遍历 vec,找到 “第一次出现的位置” 最小并且 “出现的次数” 为 1 ...原创 2019-08-23 13:43:41 · 85 阅读 · 0 评论 -
剑指Offer:两个链表的第一个公共结点
剑指Offer:两个链表的第一个公共结点 题目: 分析: 这道题的关键是明白:两个链表从第一个公共结点开始一直到 nullptr 的所有结点都是相同的 。 解法 1: 常规解法,先得到两个链表的长度差 d,让比较长的那个先走 d 步,然后两个一起往前走,走到同一处时,结束。 代码: /* struct ListNode { int val; struct ListNode *next; ...原创 2019-08-23 14:36:39 · 156 阅读 · 0 评论