自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 归并排序

看很多人写得面经都被问到了手写归并排序归并排序的思路是分治和递归每次分成两个有序的数组之后,化解成合并两个有序数组的问题void merge(int a[],int first,int mid,int last,int temp[]){ int i=first; int j=mid+1; int m=mid; int n=last; int k

2016-08-22 16:19:00 253

转载 面试常考算法题

点击打开链接

2016-08-11 16:23:23 360

转载 文本特征提取方法的研究

点击打开链接

2016-08-09 14:49:40 334

转载 快速排序的改进方法

点击打开链接

2016-08-04 16:50:54 542

转载 推荐系统的相关算法SVD

点击打开链接

2016-08-04 16:13:02 284

转载 机器学习算法的比较

点击打开链接

2016-07-25 00:05:11 294

转载 SVM公式推导

点击打开链接

2016-07-24 20:26:13 226

转载 过拟合和欠拟合

点击打开链接

2016-07-23 20:22:14 244

转载 海量数据处理面试题

http://www.cnblogs.com/jerryxing/archive/2013/03/27/2984100.html

2016-07-17 15:24:57 201

原创 动态规划之LCS问题

LCS是最长公共子序列问题它不要求所得的字符在所给的字符串中是连续的。这是一道经典的动态规划题目。如果Xm=Yn,LCS(Xm,Yn)=LCS(Xm-1,Yn-1)+1;当Xm不等于Yn时,max(LCS(Xm-1,Yn),LCS(Xm,Yn-1));算法代码如下:int c[100][100];int LCS_LENGTH(const char*X,const char*Y

2016-07-07 10:16:52 374

原创 用两个栈实现队列

用两个栈实现一个队列的push和pop操作队列的特点是先进先出,栈是先进后出。因此,push操作只需要按顺序进栈,pop操作需要把一个栈中的元素转移到另一个栈。stack stack1;stack stack2;void push(int node) { stack1.push(node); } int pop() { int a;

2016-07-06 10:51:23 220

原创 重建二叉树

输入一棵二叉树的前序遍历序列和中序遍历序列,重建二叉树,返回二叉树的根结点。采用递归的思想,前序遍历的第一个节点是二叉树的根节点,在中序遍历中找到根节点左边的是左子树,右边的是右子树。struct TreeNode* reConstructBinaryTree(vector pre,vector in) { int len=pre.size(); if(len==0)

2016-07-06 10:19:09 194

原创 连续子数组的最大和

动态规划的思路f(i)={pData[i]    i=0或者f(i-1)f(i-1)+pData[i]  i!=0或者 f(i-1)>0}如果和小于0,则下一个元素赋值给和。如果和大于0,则继续加。 int FindGreatestSumOfSubArray(vector array) { int len=array.size(); if(len==0)

2016-06-02 23:50:58 192 1

原创 两个链表的第一个公共结点

先便利一遍两个链表,求出两个链表的长度,长的链表先走两个链表长度的差值步。然后两个链表一起走,到达的第一个相同节点就是第一个公共节点。ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) { ListNode *p1=pHead1; ListNode *p2=pHead2; int le

2016-06-02 20:58:27 195

原创 斐波那契数列

输出斐波那契数列的第n项第一个想到的是用通项公式,这个最简单。但是第一次提交没有成功,后来看了看是丢失精度问题。 int fib1(int n) { double a=(1+sqrt(5))/2.0; double b=(1-sqrt(5))/2.0; if(n==1||n==2) return 1; else return (p

2016-05-21 12:07:55 209

原创 杭电acm 2017统计字符串中数字的个数

#include#include#includeusing namespace std;int main(){ int n; string s; cin>>n; while(n--) { int sum=0; cin>>s; for(int i=0;i<=s.size();i++) {

2016-05-18 20:04:21 339

原创 杭电2032 杨辉三角

#include#include#include#include#include#includeusing namespace std;int main(){ int n; int a[31][31]={0}; for(int i=1;i<=30;i++) { for(int j=1;j<=i;j++) {

2016-05-18 20:02:57 358

原创 编程之美的题目

最近在看编程之美,对于上面几道题简单整理下来,便于以后查看1.求二进制中1的个数          (1)根据二进制数的换算方法,一个数除以2,原来的数字减少一个0,如果结果有余数,则说明当前位置是1           (2)用二进制数与1,如果结果是1,表示最后一位是1,然后数字右移一位,循环操作           (3)V&(V-1)2.阶乘问题给定一个整数

2016-05-18 18:14:27 590

原创 杭电acm统计字符

这题要注意从键盘输入字符串的时候用cin函数,识别到空格会自动停止,因此要用getline(cin,str),str是要输入的字符串。Problem Description统计一个给定字符串中指定的字符出现的次数 Input测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串。注意这里的字符串包含空

2016-04-30 23:37:20 1310

原创 杭电acm1870愚人节的礼物

问题思路是识别到除了(和)以外的字符就停止识别,其实题目说了只有B字符,也可以识别到B字符的时候break.识别过程中(数字加一,)数目减一。Problem Description四月一日快到了,Vayko想了个愚人的好办法——送礼物。嘿嘿,不要想的太好,这礼物可没那么简单,Vayko为了愚人,准备了一堆盒子,其中有一个盒子里面装了礼物。盒子里面可以再放零个或者多个盒子。假设放

2016-04-30 23:33:42 1027

原创 建立一棵二叉树

采用递归的方法建立一棵二叉树,虽然很简单的算法,真正写起来确是漏洞百出,果然还是基础不够扎实。struct TreeNode{ char key; TreeNode* left; TreeNode* right;};TreeNode* CreatTree(){ TreeNode *T = new TreeNode; char a; cout<

2016-04-29 09:35:55 4193

原创 层次遍历二叉树

采用指针的方式实现二叉树的层次遍历#include #include#include#includeusing namespace std;struct TreeNode{ int key; TreeNode* left; TreeNode* right;};void PrintNodeByLevel(TreeNode* root){ if(root

2016-04-28 14:45:10 427

原创 重建二叉树

经典的题目,已知一颗树的前序遍历和中序遍历,求这个树的后序遍历。#include #include#includeusing namespace std;struct TreeNode{ int key; TreeNode* left; TreeNode* right;};TreeNode* CreateTree(int *pre_order,int pr

2016-04-28 11:19:12 262

原创 字符串替换

这是一道字符串替换的题目,重点是要注意到对字母的大小写不敏感。c++对字符的替换有replace函数,若是要对整个祖父穿替换需要自己定义替换函数。而用java语言写就简单多了。import java.util.Scanner;public class main{ public static void main(String[] args){ Scanner s=new Sca

2016-04-27 22:52:14 246

原创 链表 倒序输出

倒序输出可以用先逆转链表在顺序输出的思路。在不改变链表的结构的前提下,用栈来实现先进后出的目的。void PrintReverse(ListNode*phead){    std::stacknodes;    ListNode*pNode=phead;    while(pNode!=NULL)    {        nodes.push(pNode);

2016-04-27 11:16:17 376

原创 构建链表 c++

构建一个链表。头插法和尾插法#include using namespace std;struct ListNode{    int m_key;    ListNode* next;};void creatNodeList(ListNode *phead){    ListNode *p=phead;    for(int i=1;i

2016-04-27 11:01:41 326

原创 替换字符串中的空格为%20

剑指offer上面的一道题。例如字符串是we are happy.输出 we%20are%20happy.如果按照基本的思路从前到后遍历字符串,每次识别到空格后面的字符就要往后移动两个位。因此用从后向前的方式先计算出替换后的数组的长度。设置两个指针一个指向新数组的尾部,另一个指向原来数组的尾部。直到两个指针的数值相同时表示遍历完成。代码如下。#include#includ

2016-04-22 16:30:26 1335

原创 幸运数 47

一道关于幸运数的题目,不过我思路一定是错的。还没想出来怎么做,先mark一下吧。#include#include#include#include#includeusing namespace std;int main() {vectora;vectorb1;int aa,b;cin>>aa>>b;int temp=b;if(aa{   

2016-04-22 11:01:16 1192

原创 输出数组的全部组合

采用递归的思想。#include#include#includeusing namespace std;void combine(int arr[],int data[],int start,int end,int index,int r){    if(index==r)    {        for(int i=0;i            {cout

2016-04-22 09:15:38 3214

原创 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。

先遍历一遍数组,两个两个分成一组,小的放在左边大的放在右边,这样比较次数是N/2。N是数组的长度。然后最小的元素一定是在每组的左边,最大的元素在右边。下一步在左边的所有元素中比较N/2次产生最小的,在右边的元素中比较N/2次产生最大的。总共需要比较的次数是3*(N/2)次。代码如下#include #includeusing namespace std;int main()

2016-04-20 17:08:12 6893

原创 vector 用法

vector使用很方便输入方式1.直接手动输入vector v; v.push_back(0); v.push_back(1); v.push_back(3); v.push_back(0); v.push_back(12);输入方式2,键盘输入,未知数组的大小vectorv;while(cin>>a){v.push_back(a);}输

2016-04-20 16:39:05 362

原创 leetcode 283 Movezeros

实现将数组中的0元素移动到末尾我的思路是扫描一遍数组,元素为0则计数加一,不为0则按顺序复制给新数组。完整c++代码如下:#include #includeusing namespace std;void moveZeroes(vector& nums) {     int count,i,j,p;     count=0;     j=0;     int l

2016-04-20 16:02:27 249

原创 链表的倒数第k个元素(mark)

void createList1(ListNode* pHead){    ListNode* p=pHead;//指向头节点的指针    for(int i=1;i    {        ListNode*pNewNode=new ListNode;        pNewNode->m_key=i;        pNewNode->next=NULL;

2016-04-20 00:23:24 327

原创 链表操作 创建链表和打印链表

通过以下程序实现创建一个长度为10的链表,其中链表的元素是0-9.并且打印出来。//#include"stdafx.h"#include#include#include#includeusing namespace std;struct ListNode{    int m_key;    ListNode* next;};void createLi

2016-04-20 00:02:40 349

原创 字符串转数字

看了剑指offer上面的第一道题,字符串转数字,就去查了下,有多种方法。比如可以直接用函数atoi();下面是我的代码。#include#include#include#include#includeusing namespace std;int main(){string a ="100";int num=0;if(a.length()!=0){

2016-04-19 21:17:29 276

原创 杭电acm2015

#include #includeusing namespace std;int main(){    int n;    int m;    int temp;    int ave;    while(cin>>n)    {        int sum=0;        int num=0;        cin>>m;     

2016-04-17 00:03:56 476

原创 杭电2014

#include #include#include#includeusing namespace std;int main(){    int n;    double X;    while(cin>>n)    {        double a[100]={0};        double max1=0;        double mi

2016-04-16 22:54:56 498

原创 杭电1196

#include#include#include#includeusing namespace std;int main(){    int i,x,z,result;    while(cin>>x)    {        if(x==0)        {        }    else{    int j=0;    i

2016-04-14 16:38:44 301

原创 杭电1061

Problem DescriptionGiven a positive integer N, you should output the most right digit of N^N. InputThe input contains several test cases. The first line of the input is a single integer T

2016-04-13 20:16:08 296

原创 杭电1012

#include#include#include#includeusing namespace std;int fun(int x){    int a[11];     a[0]=1;    for(int i=1;i    {        a[i]=i*a[i-1];    }    return a[x];}int main()

2016-04-13 19:25:54 366

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除