随笔分类 -  剑指offer

摘要:螺旋矩阵:要求输入(x,y),输出螺旋矩阵中相应的元素。 int printfSpiralMatrix(int x,int y) { int Max = abs(x) > abs(y) ? abs(x) : abs(y); int Result; if (Max == x) // x 正半轴 { i 阅读全文
posted @ 2016-07-17 23:34 _in_the_way 阅读(506) 评论(0) 推荐(0)
摘要:int ReverseInterage(int Num) { long long tmp = 0; for (; Num; Num /= 10) tmp = tmp * 10 + Num % 10; return (tmp <= INT_MAX && tmp >= INT_MIN) ? tmp : 阅读全文
posted @ 2016-07-15 21:26 _in_the_way 阅读(284) 评论(0) 推荐(0)
摘要:1.N的阶乘,末尾0的个数 void nStepMultiply(int Num) { int result = 0; while (Num) { result += Num / 5; Num /= 5; } cout << result << endl; } 2.N的阶乘,二进制中的最后一个1的位 阅读全文
posted @ 2016-07-15 20:26 _in_the_way 阅读(167) 评论(0) 推荐(0)
摘要:1.判断一个数是不是2的幂 bool isTwoPower(int n) { return (n > 0) && (n&(n - 1)); } 2.判断一个数是不是3的幂 class Solution { public: bool isPowerOfThree(int n) { if(n>0) { 阅读全文
posted @ 2016-07-13 19:54 _in_the_way 阅读(176) 评论(0) 推荐(0)
摘要:vector<int> Intersection(vector<int>& Vector1, vector<int>& Vector2) { sort(Vector1.begin(), Vector1.end()); sort(Vector2.begin(), Vector2.end()); int 阅读全文
posted @ 2016-07-12 23:19 _in_the_way 阅读(212) 评论(0) 推荐(0)
摘要:思想分析: 实现方案: class MinStack { public: MinStack() {} void push(int x) { if (StackNum.empty()) { StackNum.push(x); StackMin.push(x); } else { if (x <= St 阅读全文
posted @ 2016-07-12 22:09 _in_the_way 阅读(183) 评论(0) 推荐(0)
摘要:将字符串中的空格都替换为 %20 ( 时间复杂度为O(N)的解法 ) void ReplaceBlankSpace(char* arr) { if (arr) { int count = 0; int lenth = strlen(arr); for (int i = 0; i < lenth;++ 阅读全文
posted @ 2016-07-05 20:13 _in_the_way 阅读(1359) 评论(0) 推荐(0)
摘要:确定一个数是否存在于递增型矩阵中: bool FindInMatrixFromTopRightCorner(int(*Matrix)[5], int Row, int Find) { int i = 0, j = 4, tmp = Matrix[0][4]; while (i <= 4) { if 阅读全文
posted @ 2016-07-04 19:22 _in_the_way 阅读(334) 评论(0) 推荐(0)
摘要:带环的单链表: 如上图,List 为一个带有环的单链表,环的大小为5; 证明: S 为 slow 指针相遇前走的距离,2S 为 fast 指针相遇前走过的距离; ∵ 2S = S + n*R; //n slow,fast指针相遇前 fast 多经历的圈数 S = H_I + R1; ∴S = n*R 阅读全文
posted @ 2016-07-02 00:26 _in_the_way 阅读(570) 评论(0) 推荐(0)
摘要:/*三者中的中间数*/#define Max(a,b) (a>b?a:b) #define Min(a,b) (a> 1; }/*两者中的较小数*/ int MinOfTwo(int a, int b) { cout > 1; } 阅读全文
posted @ 2016-07-01 20:50 _in_the_way 阅读(212) 评论(0) 推荐(0)
摘要:1.利用位操作求两个整数的平均数 2.利用位操作来求两个整数之和 3.交换两个数 4.一个数是不是 2 的幂 阅读全文
posted @ 2016-06-16 21:21 _in_the_way 阅读(150) 评论(0) 推荐(0)
摘要:#pragma once #include"List.h" //1.逆序打印单链表 template<class T> void List<T>::PrintTailToHead(Node * pHead) { if (pHead == NULL) return; PrintTailToHead(p 阅读全文
posted @ 2016-06-09 22:18 _in_the_way 阅读(181) 评论(0) 推荐(0)
摘要:最优化问题,尽量都分成3,不足部分就分成2。 对于 n < 4,可以验证其分解成几个正整数的和的乘积是小于 n 的。对于 n >= 4, 能证明其能分解成几个数的和使得乘积不小于 n。如果分解成 1 和 n - 1,那么对乘积是没有帮助的,因此,假设 n分解成 a 和 n - a,2 <= a <= 阅读全文
posted @ 2016-05-31 20:49 _in_the_way 阅读(6323) 评论(0) 推荐(1)
摘要:class Solution { public: bool isPowerOfFour(int num) { if(num<=0) return false; else { int test = 0x55555555; int MaxPowerOfFour = 0x... 阅读全文
posted @ 2016-05-31 20:47 _in_the_way 阅读(398) 评论(0) 推荐(0)
摘要:1.求最短路径 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left( 阅读全文
posted @ 2016-05-31 20:42 _in_the_way 阅读(448) 评论(0) 推荐(1)
摘要:二分查找算法 1.旋转数组中的最小数字:(3,4,5,1,2 为 1,2,3,4,5 的一个旋转) 正如上图所示:我们计算中间的位置 middle 如果说 arr[middle] >= arr[start] 说明 middle 落在了前面的递增区间上,middle = start 缩小查找范围. 同 阅读全文
posted @ 2016-05-17 16:32 _in_the_way 阅读(5010) 评论(1) 推荐(0)
摘要://问题描述:数组中只出现一次的数有两个,其他都是成对出现的,请找出这两个数只出现一次的数 实现的代码: 阅读全文
posted @ 2016-05-08 23:39 _in_the_way 阅读(190) 评论(0) 推荐(0)