- 博客(10)
- 资源 (1)
- 收藏
- 关注
原创 面试题38:数字在排序数组中出现的次数
方法: 1. 查找这个数字的第一个位置,利用递归 2. 查找这个数字最后的位置,利用递归 3. 结束 #include using namespace std; int get_first_k_index(int a[], int len, int k, int begin, int end){ if(begin > end){ return -1; }
2017-04-11 19:48:48 193
原创 面试题39:获得二叉树深度和判断是否是平衡二叉树
1, 二叉树深度,一个简单的递归 2, 是否是平衡二叉树,一个略复杂的递归 见代码: #include using namespace std; struct TreeNode{ TreeNode* pleft; TreeNode* pright; int value; TreeNode(int v){ value = v;
2017-04-11 18:52:36 209
原创 面试题40:查找数组中只出现一次的数字(2个)
方法: 1, 如果数组中只有一个数字出现一次,则所有数字做^运算,最终结果就是该数字 2, 如果数组中有两个数字出现一次,假设为a,b,则所有数字做^运算,最终结果是a b 相^的结果, 此结果中的某一位肯定位1,且a中此位和b中此位必不相等, 且其他数字的此位必定存在双份,所以根据此位把原数组拆分成两个数组,则 a b 肯定分别在这两个数组中,按照1 中的方法求出即可 代码如下: #
2017-04-10 22:22:11 342
原创 面试题41:有序数组,查找和为s的两个元素and 和为s的连续数字
第一个问题:有序数组查找和为s的两个元素 方法:需要两个指针分别指向开头和结尾, 当*开头+*结尾 > s时,需要--结尾 当*开头+*结尾 直到两个指针碰头为止,代码如下 #include using namespace std; bool find_pair_for_s(int list[], int n, int s, int* index1, int* index2){
2017-04-10 20:08:47 526
原创 面试题42:旋转字符串
#include #include using namespace std; void reverse(char *begin, char *end){ if(begin == NULL || end == NULL){ return; } while(begin < end){ char tmp = *begin; *b
2017-04-10 19:43:33 205
原创 面试题43:骰子的点数
骰子个数为1:则点数和与次数的关系是: 0:0 1:1 2:1 3:1 4:1 5:1 6:1 骰子个数为2:则点数和与次数的关系是:0:0 1:0 2:1 3:2 4:3 5:4 6:5 7:6 8:5 ... ... 每增加一个骰子,则第i个元素的值,是其头6个的和 代码如下:
2017-04-10 12:55:54 642
原创 面试题44:扑克牌的顺序
这样好像更好懂一些,有错误请不吝指教#include #include using namespace std; bool is_ordered(int list[], int n){ if(list == NULL || n < 0){ return false; } sort(list, list+n); for(int i = 0; i<
2017-04-09 17:33:01 316
原创 面试题45:圆圈中最后剩下的数字
1, 最简单的方法,遍历并删除,代码如下#include #include using namespace std; int servive_cricle(int n, int m){ if(n < 1 || m < 1){ return -1; } //create circle list numbers; for(int i = 0;
2017-04-09 17:01:49 259
原创 各种排序
#include using namespace std; void swap(int *a, int *b){ int tmp = *a; *a = *b; *b = tmp; } // insert sort o(n^2) void insert_sort(int list[], int n){ for(int
2017-04-08 16:33:21 152
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人