题目描述

统计一个数字在排序数组中出现的次数。

解析:采用二分查找,搜到数字后在其前后判断并计数

class Solution {
public:int GetNumberOfK(vector<int> data ,int k) {int length=data.size();if(length <= 0)return 0;int cnt=0;int left=0;int right=length-1;int mid=(left + right)/2;while(k != data[mid] && left < right){if(k<data[mid]){right=mid-1;mid=(left + right)/2;}if(k>data[mid]){left=mid+1;mid=(left + right)/2;}}int flag=0;//搜索标志 找到时为1if(k == data[mid]){cnt++;flag=1;}int pos=mid;if(flag){int i=mid-1;while(data[i]==k){cnt++;i--;}i=mid+1;while(data[i]==k){cnt++;i++;}}return cnt;}
};

题目描述

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

解析:递归计算结点的左右结点

/*
struct TreeNode {int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};*/
class Solution {
public:int TreeDepth(TreeNode* pRoot){if(pRoot==NULL)return 0;int left=TreeDepth(pRoot->left);int right=TreeDepth(pRoot->right);return left>right?left+1:right+1;}
};

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

解析:后序遍历,每遍历一个结点时保存该结点的深度,当某结点不满足条件时返回假

class Solution {
public:bool IsBalanced_Solution(TreeNode* pRoot) {int depth=0;return isBalance(pRoot,&depth);}bool isBalance(TreeNode* pRoot,int* depth){if(pRoot==NULL){*depth=0;return true;}int left,right;if(isBalance(pRoot->left,&left) && isBalance(pRoot->right,&right)){int dif=left-right;if(dif<=1 && dif>=-1){*depth = left > right ? left+1 : right+1;return true;}}return false;}
};题目描述
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

解析:亦或处理:相同数字异或结果为零,把数组遍历全部异或,结果必为两个只出现一个的数字的异或结果,由于两个数字不同,必然异或的数存在至少一位为1,找到一位,并以这一位所在数字为0或为1,把整个数组重新分为两个子数组,这样两个不同的数就分到了两个子数组中,再分别遍历异或两个子数组就能得到唯二的两个单独出现的数字

class Solution {
public:void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {int length=data.size();if(length==0 || length==1){*num1=0;*num2=0;return;}int exclusive=resultExclusive(data);int num=1;while(exclusive < (num ^ exclusive) )num = (num << 1);vector<int> data1;vector<int> data2;for(int i=0;i<length;i++){if((data[i] ^ num) > data[i])data1.push_back(data[i]);elsedata2.push_back(data[i]);}*num1=resultExclusive(data1);*num2=resultExclusive(data2);}int resultExclusive(vector<int> data){int length=data.size();if(length==0)return 0;int result=0;for(int i=0;i<length;i++){result=(result ^ data[i]);}return result;}
};

剑指offer 算法 (知识迁移能力)相关推荐

  1. java统计一个字符串中每个字符出现的次数_剑指offer算法题054:字符流中第一个不重复的字符...

    推荐阅读:宇宙条的工作总结:一年前还在面试找工作,一年后在面试找工作的学弟学妹们:第一次当面试官的经历分享小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合 ...

  2. 道指mt4代码_剑指offer算法题052:正则表达式匹配

    小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...

  3. 剑指offer算法题028:数组中出现次数超过一半的数字

    小编在求职找找工作期间剑指offer上的算法题刷了很多遍,并且每道题小编当时都总结了一种最适合面试时手撕算法的最优解法.考虑到剑指offer算法题在面试中的高频出现,小编每天和大家分享一道剑指offe ...

  4. 剑指offer算法合集

    汇总:Android小白成长之路_知识体系汇总[持续更新中-] 简述 算法,不知道是多少程序猿的痛,对我而言也如此,因此今天开始记录那些刷过的算法题,其中最经典的莫过于剑指offer里的题目,精妙的解 ...

  5. 剑指offer算法题分析与整理(一)

    下面整理一下我在刷剑指offer时,自己做的和网上大神做的各种思路与答案,自己的代码是思路一,保证可以通过,网友的代码提供出处链接. 目录 1.数组中的逆序对 2.二维数组中的查找 3.顺时针打印矩阵 ...

  6. 剑指offer算法题分析与整理(二)

    下面整理一下我在刷剑指offer时,自己做的和网上大神做的各种思路与答案,自己的代码是思路一,保证可以通过,网友的代码提供出处链接. 目录 1.序列化二叉树 2.带记忆的DFS搜索 3.坐标数位和不大 ...

  7. LeetCode剑指offer算法备战春招-包含min函数的栈

    剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...

  8. 剑指offer 算法 (知识迁移能力2)

    题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. 解析 ...

  9. 剑指offer 算法 (抽象建模能力)

    题目描述 把n个骰子扔在地上,所有骰子朝上一面的点数之和为S,输入n,打印出S的所有可能的值出现的概率. 解析:用两个数组来存储骰子点数的每一个总数出现的次数.在一个循环中,第一个数组中的第n个数字表 ...

最新文章

  1. java项目中使用重定向返回字符串
  2. 成为黑客之前的语言准备清单
  3. linux c daemon 程序后台运行函数
  4. 我所遇到的C++连接问题汇总
  5. springmvc二十三:日期格式化
  6. Oracle 学习笔记:Backup Recovery 常用命令
  7. java学习与总结:反射及动态代理
  8. margin赋值为负值的几种效果(负值像素,负值百分数)
  9. IT人不要一直做技术(转--我也不知道转了几圈了)
  10. golang uint 减法问题
  11. 【其他】使win7尽量少占用C盘空间
  12. FISCO BCOS源码(3)线程交互和交易的生命周期
  13. pgloader mysql_pgloader 学习(四)一些简单操作例子
  14. 408代码题暴力破解——混分归纳总结
  15. PVID和VID的理解
  16. Outlook邮箱开源许可-android
  17. 详细过程MD5加密的原理+java实现
  18. Markdown文件关机没保存,怎么恢复
  19. 属性的遍历:for...in 循环
  20. ​2019胡润百富榜公布:中国互联网上演: 龙虎斗 , 阿里暂时领跑 , 企鹅紧随其后 , 李彦宏,雷军掉队...

热门文章

  1. go语言之进阶篇http客户端编程
  2. 【转】Mac下安装和配置Redis
  3. FFmpeg for ios架构:中级
  4. MS SQL backup database的俩个参数
  5. 力控报警转储 mysql_力控ODBC转储说明.pdf
  6. android rebound平移,Android 仿 IOS 拖拽回弹之进阶 ReboundFrameLayout
  7. oracle json 搜索,oracle 正则查询json返回报文中某个字段的值
  8. 计算机算法设计与分析二--分治
  9. linux 界面工具 qt,Qt主窗口中的工具栏
  10. C#.NET 连接 Access操作类