首页
学习
活动
专区
工具
TVP
发布

calmound

专栏作者
235
文章
169549
阅读量
42
订阅数
100 Same Tree
/** *题意:判断两棵二叉树 * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} p * @param {TreeNode} q * @return {boolean} */ var isSameTree = function(p
用户1624346
2018-04-18
4890
堆排序
#include<stdio.h> void AdjustMinHeap(int *a,int pos,int len) { int temp,child; for(temp=a[pos];pos*2+1<=len;pos=child) { child=pos*2+1; if(child<len && a[child+1]<a[child]) child++; if(a[child]<temp) a[pos]=a[child];
用户1624346
2018-04-17
5180
希尔排序
#include<stdio.h> void ShellSort(int array[],int length) { int i,j,h,temp; for(h=length/2;h>0;h=h/2) { for(i=h;i<length;i++) { temp=array[i]; for(j=i-h;j>=0;j-=h) { if(temp<ar
用户1624346
2018-04-17
5490
中缀表达式变为后缀表达式
中缀表达式“9+(3-1)*3+10/2”转化为后缀表达式“9 3 1-3*+ 10 2/+” 中缀表达式转后缀表达式的方法: 1.遇到操作数:直接输出(添加到后缀表达式中) 2.栈为空时,遇到运算符,直接入栈 3.遇到左括号:将其入栈 4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。 5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈 6.最终将栈中的元素依次出栈,输出。 实现9+(3-1)*3+10/2,栈=空 1.
用户1624346
2018-04-17
1.1K0
KMP
#include<stdio.h> #include<iostream> #include<string.h> using namespace std; void GetNext(char *str,int next[]) { int j,k; j=0;k=-1;next[0]=-1; while(str[j]!='\0') { if(k==-1 || str[j]==str[k]) { j++;k++;
用户1624346
2018-04-17
5290
普通二叉树转换成搜索二叉树
struct ListNode { int data; ListNode *lchild,*rchild; }; void CreateBSTree(ListNode *B2_root,ListNode *BSTree_root) { if(BSTree_root==NULL) { BSTree_root = (ListNode*)malloc(sizeof(ListNode)); BSTree_root->lchild=BSTree
用户1624346
2018-04-17
8310
Binary Tree Level Order Traversal
问题:从上到下打印二叉树的每一行 分析:先搜出二叉树的高度,然后遍历高度,每次搜索一个高度 class Solution { public: int dfs(TreeNode *root) { if(root==NULL) return 0; if(root->left==NULL && root->right==NULL) return 1; return max(dfs(root->left),dfs(root->right))+1;
用户1624346
2018-04-17
5090
Binary Tree Level Order Traversal II
问题:输出二叉树的每一行的结点,从叶子到根 /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int dfs(TreeNode
用户1624346
2018-04-17
4980
Search a 2D Matrix
问题:二维数组中是否存在一个数 class Solution { public: bool dfs(vector<vector<int> > &matrix,int target,int n) { if(n==matrix.size()) return false; if(matrix[n][0]>target) return false; for(int i=0;i<matrix[n].size();i++) {
用户1624346
2018-04-17
5360
Permutations
问题:全排列 class Solution { public: void dfs(vector<int> &num,vector<int> &vec2,vector<vector<int> >&vec1,int step,int vis[]) { if(step==num.size()) { vec1.push_back(vec2); return ; } for(int i=0;
用户1624346
2018-04-17
4600
Rotate Image
问题:矩阵顺时针旋转90度 class Solution { public: bool dfs(vector<vector<int> > &matrix,int target,int n) { if(n==matrix.size()) return false; if(matrix[n][0]>target) return false; for(int i=0;i<matrix[n].size();i++) {
用户1624346
2018-04-17
9710
Plus One
问题:数组模拟整数加1 class Solution { public: vector<int> plusOne(vector<int> &digits) { int i,k=0; int a[100]; for(i=digits.size()-1;i>=0;i--) a[k++]=digits[i]; int c=1; for(i=0;i<k;i++) {
用户1624346
2018-04-17
9040
Minimum Path Sum
问题:从左上角到右下角的最小路径和 class Solution { public: int num[300][300]; int dfs(int x,int y,vector<vector<int> >&grid) { if(x==grid.size()-1 && y==grid[0].size()-1) return grid[x][y]; if(num[x][y]) return num[x][y]; int h1=99999,h
用户1624346
2018-04-17
6350
Unique Binary Search Trees
问题:n个结点总共有多少个二叉搜索树 分析:n=1,sum1=1          n=2,sum2=2;          n=3,sum3=2(头结点为1)+1(头结点为2)+2(头结点为3)          n=4,sum4=5(头结点为1,sum3)+2(头结点为2,sum1*sum2)+2(头结点为3,sum2*sum1)+5(头结点为4,sum3)          n=5,sum5=14(sum4)+5(sum1*sum3)+4(sum2*sum2)+5(sum1*sum3)+14(sum4
用户1624346
2018-04-17
4990
Symmetric Tree
问题:判断二叉树是否为镜像二叉树 分析:递归判断,根节点单独判断,然后递归左结点和右结点,之后每次一起递归左结点的左结点和右结点的右结点比较,左结点的右结点和右结点的左结点比较 /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), righ
用户1624346
2018-04-17
4710
Set Matrix Zeroes
问题:将数组中的某个值为0的元素所在行和列的其他值都为0 分析;遍历数组找到某一值为0然后遍历他的上下左右直到边界,要用while而不能用搜索,因为搜索过去新节点的操作以旧结点一样的操作          要用一个新数组,不然原数组修改后会影响到下次的查找 class Solution { public: void setZeroes(vector<vector<int> > &matrix) { int i,j; int num[330][330];
用户1624346
2018-04-17
6270
Sum Root to Leaf Numbers
问题:根节点到叶子结点的所有权值和 分析:从根节点遍历,若遍历到叶子结点,则sum+其路径的所有权值和 /** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution {
用户1624346
2018-04-17
4980
Remove Duplicates from Sorted Array II
问题:消除数组中重复次数超过三次的多余的数 分析:若ai-1==ai-2若ai也相等,则清楚ai class Solution { public: int removeDuplicates(int A[], int n) { int i,j; for(i=2;i<n;i++) { if(A[i-2]==A[i-1]) { if(A[i]==A[i-1])
用户1624346
2018-04-17
5600
Remove Nth Node From End of List
问题:删除距离末尾n个距离的结点 分析:先找出距离末尾n个距离的结点其距离开始的距离多少,然后再删除 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: int front; in
用户1624346
2018-04-17
5480
Pascal's Triangle II
问题:输出杨辉三角的第n行 class Solution { public: vector<int> getRow(int rowIndex) { vector<int> vec; int a[100][100]; a[0][0]=1; int j,i; for(i=1;i<=rowIndex;i++) { a[i][0]=1; for(j=1;j<i;j+
用户1624346
2018-04-17
4420
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档