上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 43 下一页
摘要: 1 //按照剑指offer书上的方法,两次翻转字符串。 2 class Solution { 3 public: 4 string LeftRotateString(string str, int n) { 5 reverse(str.begin(), str.end()); 6 reverse(str.begin(), str.begin(... 阅读全文
posted @ 2019-07-18 14:56 Austin_anheqiao 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 思路: 递增数列,设两个头尾指针 i 和 j ; 若ai + aj == sum,就是答案(相差越远乘积越小) 若ai + aj > sum,aj肯定不是答案之一(前面已得出 i 前面的数已是不可能),j -= 1 若ai + aj < sum,ai肯定不是答案之一(前面已得出 j 后面的数已是不可 阅读全文
posted @ 2019-07-18 11:12 Austin_anheqiao 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 思路: 如果只有一个数字,那么就好求了,直接异或,结果就是这个数字。 试着把原数组分成两个子数组,每个数组包含一个只出现一次的数字,其他数字都是成对出现。 怎么拆分呢? 1、先把数组从头到尾异或,最终得到的结果是这两个数字异或的结果,由于这两个数字不一样,所以异或的结果肯定非0,即结果数字的二进制表 阅读全文
posted @ 2019-07-17 19:56 Austin_anheqiao 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 红黑树是一棵二叉搜索树,每个结点上增加了一个存储位来表示结点的颜色,可以是RED 或 BLACK。 通过对任何一条root->叶子 的路径上的所有节点的颜色来进行约束。 红黑树确保没有一条路径比其他路径长2倍,是近似平衡的。 性质: 1、节点要么红,要么黑; 2、根节点黑色; 3、叶节点黑; 4、如 阅读全文
posted @ 2019-07-17 14:21 Austin_anheqiao 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 每棵子树头节点的值都比各自左子树上所有节点值要大,也都比各自右子树上所有节点值要小。 二叉查找树的中序遍历序列一定是从小到大排列的。 一个节点的后继节点是指,这个节点在中序遍历序列中的下一个节点。相应的,前驱节点是指这个节点在中序遍历序列中的上一个节点。 毕竟二叉搜索树的查询复杂度只是介于 ~ 之间 阅读全文
posted @ 2019-07-17 10:52 Austin_anheqiao 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 思路: 用两个数small和big分别表示序列的最小值和最大值。 首先把small初始化为1,big初始化为2. 如果从small到big的序列的和大于sum,就去掉序列中最小的值,也即是增大small的值; 如果和小于sum,那就让这个序列包含更多的数字,因为,这个序列至少要两个数字,所以一直增加 阅读全文
posted @ 2019-07-16 16:35 Austin_anheqiao 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 首先 这两种类型都可以对应一个字符串,很多时候二者可以混用。 函数形参可以是char[]可以是 char *。 不同点 char*是变量,值可以改变, char[]是常量,值不能改变。 char[]对应的内存区域总是可写,char*指向的区域有时可写,有时只读: char *本身是一个字符指针变量, 阅读全文
posted @ 2019-07-14 16:09 Austin_anheqiao 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 补充:默认升序数组。 思路: 升序,就先想到二分法,找到第一个k的索引,最后一个k的索引,last-first+1 1、查第一个k if[mid] > k: 说明第一个k出现在左边的子数组,因此 end = mid-1; if [mid] < k: 说明第一个k出现在右边的数组,因此 start = 阅读全文
posted @ 2019-07-13 16:55 Austin_anheqiao 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 思路: 利用栈的思想,从尾到头进行比较。空间复杂度O(M+N),时间复杂度O(M+N); 利用双指针,首先遍历两个链表的长度,让长的链表先走 比短链表长的 步数,然后同时在两个链表上遍历,找到的第一个相同的结点就是他们的第一个公共的节点。 阅读全文
posted @ 2019-07-13 15:10 Austin_anheqiao 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 归并排序 二分,比较与合并。 原理 采用递归和分治的思想,首先将数组二分成多个子序列,然后两两子序列进行比较与合并,使其合并为一个完全有序的序列。不断进行比较与合并,使子序列们最终合并为一个完整有序的序列。 分析 最佳:o(n) 最坏:o(nlogn) 平均:o(nlogn) 稳定,适用大规模,内存 阅读全文
posted @ 2019-07-12 18:16 Austin_anheqiao 阅读(147) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 43 下一页