- 博客(102)
- 资源 (129)
- 收藏
- 关注
转载 2016 年谷歌开源了超酷炫的项目
开放源代码软件让 Google 能够无需重新发明轮子就能够快速有效地进行开发,也让我们能够集中注意力来解决新问题。我们知道,支持开源,就是站在了巨人的肩膀上,所以 Google 员工能够轻松地将他们在内部工作的项目作为开放源代码发布。我们已经发布了超过2000万行的开源代码,包括 Android,Angular,Chromium,Kubernetes 和 TensorFlow等项目。 我们
2016-12-20 19:19:47 574
转载 八款实用软件
1、ABBYY FineReader:最好的OCR识别软件,主要用于将扫描图像、图片型PDF转化成可编辑的文本。ABBYY FineReader 可以看作是超级无敌的 PDF 转换器,能转换任意类型的 PDF,其他 PDF 转换工具、或清华紫光OCR、尚书七号、汉王OCR等在它面前都可谓是浮云。ABBYY FineReader2、YoMail:免费的邮箱客户端软件——Y
2016-12-20 10:58:55 570
翻译 圆圈中最后剩下的数字(约瑟夫环问题)
问题:0,1,2,.......,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字,求出这个圆圈里面剩下的最后的一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前四个数字一次是2、0、4、1,因此最后剩下的数字是3.详细的设计代码如下:// ====================方法1:经典的解法,用环形链表模拟圆
2016-12-20 10:54:38 1090
翻译 扑克牌的顺子
问题:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字的本身,A为1,J,Q,K为11,12,13,而大小王可以看成任意数字。 详细的实现代码如下://比较两个值的大小int compare(const void *arg1, const void *arg2);//判断是否连续bool IsContinuous(int* numbers,
2016-12-20 10:34:41 376
翻译 n个骰子的点数
计算机作为一种工具,它的作用是用来解决实际的生产生活中的问题。程序员的工作就是把各种现实问题抽象成数学模型并用计算机的编程语言表达出来。建立模型:第一步:选择合理的数据结构表达问题;第二步:分析模型中的内在规律,并且用编程语言表达这种规律。问题:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。 详细的实现代码如下:int g_maxV
2016-12-20 10:28:29 290
转载 SQL注入
SQL注入是一个比较“古老”的话题,虽然现在存在这种漏洞的站点比较少了,我们还是有必要了解一下它的危害,及其常用的手段,知己知彼方能百战不殆。进攻与防守相当于矛和盾的关系,我们如果能清楚了解攻击的全过程,就可以更好的预防类似情况的出现。 SQL注入原理 主要是攻击者,利益被攻击页面的一些漏洞(通常都是程序员粗心大意造成的),改变数据库执行的SQL语句,从而达到获取“非授权信息”
2016-12-19 19:34:09 441
翻译 左旋转字符串
问题:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如输入字符串"abcdefg"和数字2,该函数将返回左旋转2位得到的结果"cdefgab". 算法思想:三次旋转,第一次旋转字符前面n个字符,第二次旋转字符串的后面部分,第三次旋转整个字符串。//左旋转操作char* LeftRotateString(char* pStr,
2016-12-19 19:15:44 320
翻译 打印结果为S的连续序列
问题:输入一个正数S,打印出所有和为S的连续正数序列(至少含有两个数)。例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以打印的结果为三个连续的序列1-5,4-6和7-8. 算法的过程如下:详细的代码如下://打印出连续的序列void PrintContinuousSequence(int small, int big);void FindContinuou
2016-12-19 19:08:48 332
翻译 翻转单词的顺序
问题:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和和普通字母一样处理。例如输入字符串"I am a student",则输出".student a am I" 算法思想:翻转两次就够了,第一次翻转整个句子得到"tneduts a ma I" ;第二次翻转每个单词得到".student a am I" 详细的实现代码如下:
2016-12-19 19:02:51 513
翻译 和为S的两个数字
问题:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得它们的和正好是S。如果有多对数字的和等于S,输出任意一对即可。 例如输入数组{1、2、4、7、11、15}和数字15.由于4+11=15,因此输出4和11. 算法的过程如下: 详细的代码如下:bool FindNumbersWithSum(int data[], int length, int su
2016-12-19 18:55:38 298
翻译 数组中只出现一次的数字
问题:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度为O(1). 算法思想:采取异或操作和根据结果二进制中1的位置进行划分为两个部分,然后在采取异或运算得出不同的结果。unsigned int FindFirstBitIs1(int num);bool IsBit1
2016-12-19 18:44:13 292
翻译 判断一棵二叉树是否为平衡二叉树
问题:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。例如下面就是一棵平衡二叉树。运用递归自底向上(从叶子结点到根结点)的思想实现的代码:// ====================方法1(自根到叶子)====================int TreeDepth(BinaryTreeNode*
2016-12-19 16:55:24 466
翻译 二叉树的深度
问题:输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 二叉树的定义如下: struct BinaryTreeNode { int m_nValue; BinaryTreeNode * m_pLeft ; BinaryTreeNode *
2016-12-19 16:47:04 307
翻译 数字在排序数组中出现的次数
问题:统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4。 详细的设计代码如下:(二分查找思想)int GetNumberOfK(int* data, int length, int k){ int number = 0; if(data != NULL && length >
2016-12-19 16:38:41 351
转载 六款堪称神器的电脑软件
一,Smallpdf,不是软件,是一个在线网站,针对PDF文件的各种处理方案,可以在线将pdf转换为EXCEL,WORD,JPG,PPT,可以将PPT,JPG,WORD,EXCEL可以转换成pdf,可以将pdf合并,压缩,分割,解密。简介美观的界面,实用的功能,办公神器。二,ADSafe,广告终结者,桌面弹窗视频广告,无所遁形,口碑之王。出了安卓版。三,Wolfram Alpha。一款计算
2016-12-19 12:58:55 4196 1
翻译 程序员需要观看的书籍
要求是这样的:1)建立起计算系统的概念,理解计算系统自底向上、逐次构造的过程,了解经典计算系统的工作基础;2) 了解计算机系统的底层机制,包括数据的机器级表示、数字逻辑、冯·诺伊曼模型、机器语言、汇编语言、输入和输出、Trap 机制等;3) 掌握结构化程序设计语言基础,包括变量和运算符、类型、表达式、简单I/O、控制结构、函数、数组和指针等;4) 理解结构化程序设计,能
2016-12-19 12:55:48 525
翻译 面试中的各项能力
面试中的各项能力一、沟通能力和学习能力 面试官对沟通能力、学习能力的考查贯穿整个面试的始终,他们会关注面试者的言谈举止,通常面试官认为善于提问的人有较好的的沟通和学习能力。 二、知识迁移能力 这种能力能够帮助我们解决很多问题,有些面试官喜欢用简单的问题牵引出复杂的问题的解法,这要求面试者平时要有一定的积累,并且每做完一道题之后都要总结解题的方法。
2016-12-18 15:46:52 624
转载 GitHub 排名前 100 的安卓、iOS项目简介
GitHub Android Libraries Top 100 简介排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者快速了解当前一些流行的 Android 开源库。项目名称项目简介1
2016-12-17 16:13:05 548
转载 2017 年建议学习的编程语言、框架和工具
大趋势渐进式 Web Apps在 2016 年里,我们见证了 Progressive Web App 概念的蓬勃兴起。它意味着 Web 应用程序可以离线工作,并能提供原生移动应用的体验。它们可以添加到你的智能设备的主屏幕上,甚至可以给你发送推送通知,从而弥补与原生移动应用程序的差距。我们认为,在 2017 年,渐进式 Web Apps 将变得更加重要,也值得我们去探究。在这里查
2016-12-17 16:07:36 7032 1
翻译 两个链表的第一个公共结点
问题:输入两个链表,找出它们的第一个公共结点。链表的结点定义如下: struct ListNode { int m_nKey; ListNode * m_pNext;} 解决问题的思路:(1)蛮力法:时间复杂度O(m*n)(2)运用栈的反向思考ListNode* FindFirstCommon
2016-12-17 15:40:29 425
翻译 数组中的逆序对
问题:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如在数组{7,5,6,4},一共有5个逆序对,分别是(7,6),(7,5),(7,4),(6,4)和(5,4).解决问题的思路(归并排序):int InversePairs(int* data, int length){ if(data == NULL
2016-12-17 15:29:21 244
翻译 第一个只出现一次的字符
问题:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出‘b’。详细的实现代码如下:(运用hash表)char FirstNotRepeatingChar(char* pString){ if(pString == NULL) return '\0'; const int tableSize = 256; unsigned
2016-12-17 15:22:14 293
翻译 丑数
问题:把只包含因子2、3、5的数称作丑数,求从小到大的顺序的第1500个丑数。// ====================算法1的代码:穷举====================bool IsUgly(int number){ while(number % 2 == 0) number /= 2; while(number % 3 == 0)
2016-12-15 18:36:55 365
翻译 把数组排成最小的数
问题:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,求所有数字中的最小一个. 详细代码如下:int compare(const void* strNumber1, const void* strNumber2);// int型整数用十进制表示最多只有10位const int g_MaxNumberLength = 10; char* g_StrCombine1 = n
2016-12-15 18:32:41 489
翻译 从1到n正数中1出现的次数
问题:输入一个整数n,求从1到n这n个整数的十进制中1出现的次数。 详细实现代码如下:// ====================方法一:穷举====================int NumberOf1(unsigned int n);int NumberOf1Between1AndN_Solution1(unsigned int n){ int number =
2016-12-15 18:28:49 452
翻译 连续子数组的最大和
问题:输入一个整型数组,数组里有正数和负数。数组中一个或者连续的的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n).详细的实现代码如下:bool g_InvalidInput = false;//解法一:举例分析数组的规律int FindGreatestSumOfSubArray(int *pData, int nLength){ if((
2016-12-15 18:24:39 420
原创 Llinux下安装网易云和QQ
Linux下安装软件对一个新手来说并不容易,下面来讲讲安装网易云和QQ的简单操作:(1)安装网易云音乐:下载地址点击打开链接方法:在ubuntu的控制台命令窗口输入命令:sudo dpkg -i netease-cloud-music_1.0.0_amd64_ubuntu16.04.deb会出现依赖问题 输入:sudo apt-get install -f重新输入上个命
2016-12-13 18:42:35 1003
翻译 最小的K个数
问题:输入n个整数,找出其中最小的k个数。例如输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4. 详细的实现代码如下:// ====================方法1:O(n)的算法,只有当我们可以修改输入的数组时可以使用====================void GetLeastNumbers_Solution1(int* input, int
2016-12-13 15:54:14 272
翻译 数组中出现次数超过一半的数字
问题:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如一个长度为9的数组{1,2,3,2,2,2,4,5,2},输出为2. 详细的代码实现如下:// Random Partitionint RandomInRange(int min, int max){ int random = rand() % (max - min + 1) + min; re
2016-12-13 15:44:18 325
原创 寻找最近点对
问题:给定平面上N个点的坐标,找出距离最近的两个点。解法一.蛮力法(两两之间的差值都求出来)时间复杂度O(N*N)解法二:一维情况下排序求解时间复杂度O(N*logN)解法三:分治思想,用于一般的情况 思想如下:(1)根据水平方向的坐标把平面上的N个点分成两个部分Left和Right (2)由Min(lfet,ri
2016-12-13 10:47:46 1063 1
翻译 解决面试题思路总结
面试中我们难免会遇到难题,画图、举例子、和分解三种办法都是行之有效的办法。(1)画图可以使问题形象化,直观表述问题;(2)举例子可以使问题具体化,从中找到规律;(3)分解把复杂问题分解成若干个小问题,是解决复杂问题的有效办法。分治法、动态规划都是分解复杂问题的思路。(4)拓展问题: a.求解使得正方体上三组相对面上的四个顶点的和相等: b.八皇后问
2016-12-12 16:44:55 550
翻译 字符串的排列
问题:输入一个字符串,打印出该字符串中字符的所有排列。例如输入ab,则打印出ab,ba。(采取了分治的思想:分解成子问题,即可以看成两步,首先求出可能出现在第一个位置的字母,后面的为一部分,即把第一个字符和后面所有的字符交换) 实现的详细代码如下:#include "stdafx.h"void Permutation(char* pStr, char* pBegin);void
2016-12-12 16:33:45 236
翻译 二叉搜索树与双向链表
问题:输入一颗二叉搜素树,将该二叉搜索树转换成一个排序的双向链表,要求不能创建任何新的结点,只能调整树中结点指针的指向。 二叉树的结点的定义如下: struct BinaryTreeNode{ int m_nValue; BinaryTreeNode * m_pLeft; BinaryTreeNode* m_pRight;
2016-12-12 16:24:26 362
翻译 复杂链表的复制
问题:请实现函数ComplexListNode* Clone(ComplexListNode* pHead)复制一个复杂链表。(分解让复杂的问题简单化)结点的C++定义如下: struct ComplexListNode { int m_nValue; ComplexListNode* m_pNext;
2016-12-12 16:13:22 248
翻译 二叉树中和为某一值的路径
问题一:输入一棵二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。二叉树结点的定义如下: struct BinaryTreeNode { int m_nValue; BinaryTreeNode * m_pLeft; BinaryTreeNode * m_pRight; };详细的代
2016-12-12 13:10:47 361
翻译 神经网络初探
一.BP神经网络:曾经的最著名、最经典的非线性学习算法 (1)BP神经网络基本结构 (2)传递激活函数 (3)训练过程 a.正向传播过程 b.计算期望与实际分类的误差 c.计算反向传播过程 d.修正各层的权值 (4)代码实现# -*- coding: UTF-8 -
2016-12-11 22:31:04 793 1
翻译 找到符合条件的整数
问题:任意给定一个正整数N,求一个最小的正整数M(M>1),使得N*M的十进制表示形式里只含有1和0. 解法一.一般正向思维 解法二.逆向思维:已知结果求条件代码实现如下:// 初始化 for(i = 0; i < N; i++) BigInt[i].clear(); BigInt[1].push_back(0);
2016-12-11 21:06:57 795
翻译 求最大公约数
问题:求两个正整数的最大公约数。(假设两个正整数很大)解法一.辗转相除法Bigint gcd(Bigint x ,Bigint y){ return(!y) ? x: gcd(y,x%y);}解法二. 移位操作加减法操作Bigint gdc(Bigint x,Bigint y){ if(x<y) return gcd(y,x); if(y==0) re
2016-12-11 20:42:24 460
翻译 栈的压入、弹出序列 和从上往下打印二叉树(层序遍历)
问题一.输入两个整数序列,第一个序列表示栈的压入顺序,判断第二个序列是否为该栈的弹出序列。假设压入栈的所有数字均不相等。例如序列 1、2、3、4、5为压栈的序列,序列4、5、3、2、1为其一个弹出序列,但是4、3、5、1、2就不可能是该栈的弹出序列。 解决问题的详细代码如下:#include "stdafx.h"#include //判断是否为一个栈的出栈顺序bool IsPo
2016-12-11 20:06:24 709
翻译 算法导论 所有节点对的最短路径
本章主要讲述:1.Floyd-Warshall算法:求解任意两点间的最短距离,时间复杂度为O(n^3)。 (1)使用条件&范围:通常可以在任何图中使用,包括有向图、带负权边的图。 (2)弗洛伊德(Floyd)算法过程: 1、用D[v][w]记录每一对顶点的最短距离。 2、依次扫描每一个点,并以其为基点再遍历所有每一对顶点D[][]的值,看看是否
2016-12-10 16:40:40 3256
java集合框架
2018-01-31
scrapy爬虫项目
2017-09-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人