随笔分类 - 剑指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
阅读全文
摘要: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 :
阅读全文
摘要:1.N的阶乘,末尾0的个数 void nStepMultiply(int Num) { int result = 0; while (Num) { result += Num / 5; Num /= 5; } cout << result << endl; } 2.N的阶乘,二进制中的最后一个1的位
阅读全文
摘要:1.判断一个数是不是2的幂 bool isTwoPower(int n) { return (n > 0) && (n&(n - 1)); } 2.判断一个数是不是3的幂 class Solution { public: bool isPowerOfThree(int n) { if(n>0) {
阅读全文
摘要:vector<int> Intersection(vector<int>& Vector1, vector<int>& Vector2) { sort(Vector1.begin(), Vector1.end()); sort(Vector2.begin(), Vector2.end()); int
阅读全文
摘要:思想分析: 实现方案: class MinStack { public: MinStack() {} void push(int x) { if (StackNum.empty()) { StackNum.push(x); StackMin.push(x); } else { if (x <= St
阅读全文
摘要:将字符串中的空格都替换为 %20 ( 时间复杂度为O(N)的解法 ) void ReplaceBlankSpace(char* arr) { if (arr) { int count = 0; int lenth = strlen(arr); for (int i = 0; i < lenth;++
阅读全文
摘要:确定一个数是否存在于递增型矩阵中: bool FindInMatrixFromTopRightCorner(int(*Matrix)[5], int Row, int Find) { int i = 0, j = 4, tmp = Matrix[0][4]; while (i <= 4) { if
阅读全文
摘要:带环的单链表: 如上图,List 为一个带有环的单链表,环的大小为5; 证明: S 为 slow 指针相遇前走的距离,2S 为 fast 指针相遇前走过的距离; ∵ 2S = S + n*R; //n slow,fast指针相遇前 fast 多经历的圈数 S = H_I + R1; ∴S = n*R
阅读全文
摘要:/*三者中的中间数*/#define Max(a,b) (a>b?a:b) #define Min(a,b) (a> 1; }/*两者中的较小数*/ int MinOfTwo(int a, int b) { cout > 1; }
阅读全文
摘要:1.利用位操作求两个整数的平均数 2.利用位操作来求两个整数之和 3.交换两个数 4.一个数是不是 2 的幂
阅读全文
摘要:#pragma once #include"List.h" //1.逆序打印单链表 template<class T> void List<T>::PrintTailToHead(Node * pHead) { if (pHead == NULL) return; PrintTailToHead(p
阅读全文
摘要:最优化问题,尽量都分成3,不足部分就分成2。 对于 n < 4,可以验证其分解成几个正整数的和的乘积是小于 n 的。对于 n >= 4, 能证明其能分解成几个数的和使得乘积不小于 n。如果分解成 1 和 n - 1,那么对乘积是没有帮助的,因此,假设 n分解成 a 和 n - a,2 <= a <=
阅读全文
摘要:class Solution { public: bool isPowerOfFour(int num) { if(num<=0) return false; else { int test = 0x55555555; int MaxPowerOfFour = 0x...
阅读全文
摘要:1.求最短路径 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(
阅读全文
摘要:二分查找算法 1.旋转数组中的最小数字:(3,4,5,1,2 为 1,2,3,4,5 的一个旋转) 正如上图所示:我们计算中间的位置 middle 如果说 arr[middle] >= arr[start] 说明 middle 落在了前面的递增区间上,middle = start 缩小查找范围. 同
阅读全文
摘要://问题描述:数组中只出现一次的数有两个,其他都是成对出现的,请找出这两个数只出现一次的数 实现的代码:
阅读全文