自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 字符串的组合

问题:求一个字符串的所有组合?思路:可以把n个字符分成两部分:第一个字符和其余字符。假设我们想在长度为n的字符串中求m个字符的组合,我们先从头扫描字符串的第一个字符,针对第一个字符,我们有两种选择:一是把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选取m-1个字符;二是不把这个字符放到组合中去,接下来我们需要在剩下的n-1个字符中选择m个字符。用栈存储选出的字符,递归实现。...

2019-04-07 11:18:30 161

原创 字符串的排列

void permutation(string str,int index){ int len = str.size(); if(index == len) cout << str; else{ for(int i = index;i < len-1;i++){ str[index] = str[inde...

2019-04-07 10:41:24 90

原创 二叉搜索树与双向链表

思路:左指针指向左子树的最大值,右指针指向右子树的最小值。struct node{ int value; node* left; node* right;}node* convert(node* root){ node* pLast = NULL; convertNode(root,&pLast); node* he...

2019-04-07 10:29:18 130

原创 复杂链表的复制

思路两步走,先复制next,在复制m_pSibling,时间复杂度主要花在复制m_pSibling上有两种解法:1.哈希表2.原地方法一:class node{public: int value; node* next; node* sibling; node(int _value){ value = _value;...

2019-04-07 09:57:46 93

原创 二叉树中和为某一路径的值

思路递归遍历节点;每遍历一个节点,计算和,并加入路径‘if(叶子节点){ if(和 == 整数){ 输出路径 }}else { 递归}减去和;路径pushstruct node{ int value; node* left; node* right;}void findPath(node* ro...

2019-04-06 23:12:06 176

翻译 判断一个数组是否是二叉搜索树的后序遍历序列

bool VerifySquenceOfBST(int sequence[], int len) { int i = 0; int root = sequence[len - 1]; for (; i < len - 1; i++) { if (sequence[i] > root)break; } int j = i; for (; j < len - 1; ...

2019-04-03 10:14:14 237

原创 已知入栈序列,求所有可能的出栈序列

思路:1.元素入栈递归恢复现场2.出栈递归恢复现场void popSeq(list<int>in,stack<int> st,vector<int> out,vector<vector<int>>& res,int len){ if (out.size() == len) { res....

2019-04-03 09:57:30 2189

原创 atoi函数

使用全局变量来记录返回值是否正确;//符号//非法字符//溢出enum Status{kValid = 0,kInValid}int g_Status = kValid;int strToInt(string s){ int len = s.size(); g_Status = kInValid; long long num = 0; int...

2019-04-02 11:14:41 127

原创 螺旋矩阵

给定一个包含mxn个元素的矩阵(m行,n列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]...

2019-04-01 20:40:33 100

原创 翻转二叉树

翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1思路:前序遍历树的每一个节点,如果遍历到的节点有子节点,就交换它的两个子节点。交换完所有非叶子节点的左右节点后,就得到了树的镜像。/** ...

2019-04-01 20:39:17 63

原创 树的子结构(剑指offer 18 )

class BinaryTreeNode {public: int value; BinaryTreeNode* left; BinaryTreeNode* right;};bool DoesTreeOneHaveTreeTwo(BinaryTreeNode * root1, BinaryTreeNode* root2){ if (root2 == NULL)return true...

2019-03-31 21:03:07 79

原创 反转链表

ListNode* ReverseList(ListNode* pHead) { if (pHead->next == NULL || pHead == NULL) return pHead; ListNode* pReversedHead = NULL; ListNode* pNode = pHead; ListNode* pPrev = NULL; while (pNode ...

2019-03-31 17:49:54 76

原创 调整数组顺序是奇数位于偶数的前面

核心思想:1.左指针指向头部;右指针指向尾部;向中间移动2.左指针遇到偶数停下;右指针遇到奇数停下;3.交换两个位置的值;

2019-03-31 16:08:38 65

原创 在常数时间删除链表节点

节点位置:1.有且只有一个2.在尾部3.在中间;核心思想:删除一个节点 =用该节点后一个节点覆盖该节点的值+改变指针;class ListNode {public: int value; ListNode * next;};void DeleteNode(ListNode** pListHead, ListNode* pToDeleted) { if (p...

2019-03-31 16:04:28 209

原创 打印1到最大的n位数

核心:1. +1程序:注意大整数2.打印:去除前面的0 bool Increment(string str) { int len = str.size(); int nSum = 0; //int isOverflow = 0; int nTakeOver = 0; for (int i = len-1; i >= 0; i--) { nS...

2019-03-31 15:49:45 78

原创 数的整数次方

辅助图 + - 0 + ~ ~ 1 - ~ ~ 1 0 0 x 1 double PowerWithUnsignedExponet(double base, unsigned int absExponet) { if (absExponet == 1)return base; if...

2019-03-31 15:20:01 118

原创 不同排序算法的比较

算法 算法描述 时间复杂度 稳定排序 最坏时间复杂度 插入 每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。 n^2 稳定 冒泡 它重复地走访过要排序的元素列,依次...

2019-03-29 16:48:39 315

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除