
算法
文章平均质量分 63
天下太平
人生像风铃
展开
-
大数乘法
void MUL(char str1[], char str2[], char result[]){ int len1 = strlen(str1), len2 = strlen(str2); int index = 0, carry = 0, temp = 0;; for (int i1 = len1 - 1; i1 >= 0; --i1) { index = le原创 2013-09-29 16:56:46 · 698 阅读 · 0 评论 -
5分钟内重复上线,发警告
文章目录第一种 数据库加最近登录时间和最后登出时间第二种 设计数据结构题目:1分钟内用户上线的数目是60万,如果用户在5分钟内重复上线,就给他发警告,问如何设计?第一种 数据库加最近登录时间和最后登出时间常规设计,数据库记录额外的信息,然后交给业务层去处理。第二种 设计数据结构一个循环数组 长度为5,每个元素为hashmap。当用户ID上线时,从循环数组中遍历5次 O(5)的代价,得到...原创 2019-05-09 23:26:22 · 626 阅读 · 0 评论 -
字母大小写组合
输入“ab”,输出“ab” “Ab” “aB” “AB”时间复杂度O(2N∗N)O(2^N*N)O(2N∗N)void solution(char* str, int n) { long long S = (1 << n); for (int m = 0; m <S; m++) { for (int i = 0; i < n; i++) ...原创 2019-05-04 22:36:27 · 1648 阅读 · 0 评论 -
压缩重复的空格 只保留一个
void del_space(char* str) { if (!str) { return; } bool flag = false; char* p = str; char* q = str; while (*p != '\0') { if (*p == 0x20) { if (flag) ...原创 2019-05-04 22:31:47 · 188 阅读 · 0 评论 -
获取数组的前K小个数
#include<iostream> using namespace std;int partition(int* array, int low, int high) { if (array && low < high) { int flag = array[low]; while (low < high) ...原创 2019-05-04 22:30:00 · 600 阅读 · 0 评论 -
海盗分金币 两种条件下的分析
文章目录海盗分金币大于50%同意大于等于50%同意海盗分金币具体描述:大于50%同意大于等于50%同意原创 2019-05-04 16:55:27 · 2684 阅读 · 0 评论 -
在桌边垒砖块,求砖块右端距离桌边最大距离
文章目录思路结果思路分析第1块,显然最大是1/2.第2块不能往上放了,只能往下边放。垒到第n块时,前n-1块的中心,必须在第n块的右边缘。假设,第n块有边缘距离桌边距离x,得到公式:(1−x)22=x22+(n−1)x→x=12n\frac{(1-x)^2}{2} =\frac{x^2}{2} + (n-1)x \to x = \frac{1}{2n}2(1−x)2=2x2+(n−...原创 2019-04-13 10:41:10 · 564 阅读 · 0 评论 -
k个鸡蛋从N楼层摔,最坏情况下最少要试验x次
目录思路公式解思路k个鸡蛋从N楼层摔,最坏情况下最少要试验x次。换个说法:k个鸡蛋试验x次最多可以检测N层楼。空间复杂度O(k)时间复杂度O(k*lnN)代码如下int solution(int n, int k) { int bs = log2n(n) + 1; if (k >= bs) { return bs; } int*...原创 2019-04-13 01:45:23 · 958 阅读 · 0 评论 -
德州扑克胜率计算
http://euodds.pokernews.com/pokerodds/flashShowdownProbs.php?input=Jh|Jc|Qh|Qc|||||||||||||||||Js|Ts|Th|3s||8|1原创 2015-08-18 09:15:39 · 11990 阅读 · 1 评论 -
rand32类
写的一个简单的rand32类。线性同余法生成。附源码:rand32.h//**************************************************************//desc:generate pseudo random numbers through Linear Congruence//name:rand32.h//auth:zhou原创 2014-04-01 10:50:43 · 1587 阅读 · 0 评论 -
从[0,n)中选取不重复的m个数
void mRandn(int n, int m){ srand(time(0)); for (int i=0; i 0; ++i) { if (rand()%(n - i) < m) { cout<<i<<endl; --m; } }}原创 2014-10-22 09:44:29 · 1901 阅读 · 2 评论 -
排列算法实现
排列算法从集合S(n)中,任取k(k≤n)个元素,按照一定的顺序(有序性)排成一列,叫做集合S的一个k-排列。从集合S(n)中,取出的k-排列的总个数,叫做集合S的k-排列数。 排列符号:这里介绍3种排列形式:1.全排列。2.不重复全排列。3.选择排列。原创 2013-09-13 14:08:06 · 842 阅读 · 0 评论 -
组合算法实现
111原创 2013-09-11 18:30:40 · 3411 阅读 · 1 评论 -
求解a的N次方根
文章目录牛顿迭代法牛顿迭代法f(x)=f(x0)+f′(x0)∗(x−x0)f(x) = f(x_0)+f^{'}(x_0)*(x-x_0)f(x)=f(x0)+f′(x0)∗(x−x0)假设f(x)=xN−a=0f(x)=x^N-a=0f(x)=xN−a=0,取N=2,得到f(x)=x2−af′(x)=2xf(x)=x^2-a \quad f^{'...原创 2019-05-10 23:22:05 · 3978 阅读 · 0 评论