ACM 算法 数据结构
文章平均质量分 60
征路遥
美团点评现役码农
展开
-
求任意一个数二进制中1的个数
class Solution {public:int NumberOf1(int n) {int cnt=0;while(n!=0){cnt++;n=n&(n-1);//去除二进制中位数最低的1}return cnt;}};判断是否是2的幂if((n>0)&&(!(n&(n-1)))==true)yes简化版if(原创 2017-10-05 10:27:45 · 231 阅读 · 0 评论 -
合并两个链表并排序
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {原创 2017-10-14 20:35:07 · 777 阅读 · 0 评论 -
优先级栈的实现
基础题,实现数据结构=》注意:c++容器的应用忘光了,复习吧class Solution {public:vectorv;void push(int value) {v.push_back(value);}void pop() {v.pop_back();}int top() {if(v.empty()){return NULL;原创 2017-10-14 20:32:02 · 989 阅读 · 0 评论 -
求数组的最小的k个数,冒泡排序的应用
求数组中最小的k个数关键:冒泡,鲁棒性(考虑到所有情况)class Solution {public:vector GetLeastNumbers_Solution(vector input, int k) {int temp;vectorv;if(input.size(){input.clear();return input;}else{原创 2017-10-14 20:29:03 · 292 阅读 · 0 评论 -
二叉树递归非递归三序访问,节点数,高度全操作
二叉树判空递归=》find(),parent(),leftchild(),fan()判空递归特殊版=》size(),height()不判空递归=》三序,delete()非递归实现=》三序,层次序,层次序列镜像bool型问题=》一般来说,递归不同于以上,需要另写一函数递归=》&&用很多=》总结#include //递归1,中止条件2,空条件3,递归块/原创 2017-11-08 12:51:19 · 235 阅读 · 0 评论 -
二叉树-判断二叉树子树和镜像二叉树
bool型问题=》一般来说,递归不同于以上,需要另写一函数递归=》&&用很多=》总结一,主函数不适合递归二,重写新递归函数三,递归函数里列出所有的true or false条件四,所有的都递归&&然后返回,1,输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树1,的子结构)class Solution {public原创 2017-11-08 12:49:58 · 345 阅读 · 0 评论 -
二叉树-求二叉树当前节点的三序访问的下一节点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。典型的分组讨论=》可类比三序下一个上一个考虑这个节点有左孩子,右孩子,是左孩子,右孩子首先,要遵循左中右的顺序,一个节点刚刚被访问,那么下一个节点必然不会是其左孩子。1,如果节点为空,返回空2,如果有右孩子,p=p->right;原创 2017-11-08 12:48:31 · 234 阅读 · 0 评论 -
二叉树-dfs确定路径个数
判空递归=》find(),parent(),leftchild(),fan()二叉树判空递归=》find(),parent(),leftchild(),fan()判空递归特殊版=》size(),height()不判空递归=》三序,delete()都是dfs的应用/*将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合原创 2017-11-08 12:43:38 · 415 阅读 · 0 评论 -
重建二叉树-确定唯一的二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。* Definition for binary tree* struct TreeNode {* int val;* TreeNode *l原创 2017-11-08 12:42:09 · 313 阅读 · 0 评论 -
按行输出,之字形输出,翻转二叉树----层次遍历的应用
按各种方式输出二叉树按行输出class Solution {public:vector > Print(TreeNode* pRoot) {vector >v0;TreeNode * p=pRoot;queueq;if(pRoot==NULL){return v0;}//判断特殊条件q.push(pRoot);whil原创 2017-11-08 12:08:51 · 353 阅读 · 0 评论 -
变态跳台阶问题
如跳台阶一般,是为规律题:跳1,2,那么是f(n)=f(n-1)+f(n-2);那么1,2,3,n类推:f(n)=f(n-1)+....+f(1);找出规律:class Solution {public:int jumpFloorII(int number) {int n1=1;int n2=2;int sum1=4;int sum=原创 2017-10-05 10:36:13 · 278 阅读 · 0 评论 -
青蛙跳台阶问题
青蛙跳台阶,每次跳一步或两步,问跳n阶有多少种跳法?递归法,效率低,难思考,但是普适。分析:像二叉树一样,不断向下分析,分拆,最后回溯。class Solution {public:int jumpFloor(int number) {if(number{return 0;}if(number==1){return 1;}原创 2017-10-05 10:34:04 · 261 阅读 · 0 评论 -
递归专题总结
1,dfs,bfs,7选4组合问题等在循环中递归,cnt++;2,树形回溯二叉树中的递归,利用原函数递归,以n==1这种结尾,分拆递归回溯。比如:求二叉树节点,深度,(二叉树)求跳台阶(n叉树),递归求阶乘(单支树)。1)基准情况----必须有一些情况,不用递归就可以求解。 2)不断推进----递归调用必须能够朝着基准情况推进。=》分拆,每一原创 2017-10-05 10:33:05 · 235 阅读 · 0 评论 -
求double的int次幂
classSolution {public: doublePower(doublebase, intexponent) { if(exponent == 0){ return1; } if(exp原创 2017-10-05 10:31:47 · 314 阅读 · 0 评论 -
打印二叉树
classSolution {public: vectorint> printListFromTailToHead(ListNode* head) { vectorint> v,v1; while(head!=NULL) { v.push_back(head->val);原创 2017-10-05 10:29:16 · 194 阅读 · 0 评论 -
左移字符串
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!class Solution {public:string LeftRotateStrin原创 2017-10-14 20:36:32 · 324 阅读 · 0 评论