自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式之工厂模式

1、什么是工厂模式: 2、为什吗要用工厂模式: 3、工厂模式的三种实现方式及其各自的优劣:

2016-10-20 11:57:51 380

原创 Effective C++ 阅读笔记(1)

关键字 explicit 用于告知编译器,该构造函数可以用于完成隐式类型转换(implicit type conversation)! 建议:除非有一个很好的理由,否则将构造函数申明为 explicit!C++是一个由多个次语言组成的语言联邦 c 风格 面向对象的c 泛型C++ STL-C++ 不同的次语言尤其各自的编程守则,以传递参数为例,若编写c风格的c++, 传值比传

2016-10-17 20:08:50 367

原创 条条大路通罗马 - 华为笔试题目

// 题目本身不难,就是一个深度优先搜索// 但是-网上有一些博客给出的是错误答案// 做这个深度优先搜索的关键问题,在于如何避免重新去节点,而不是去避免已经走过的路// 在一次向下的深度搜索过程中,不能返回已经走过的节点// 但是在完成一次到底的DFS后,在返回时必须重置 “走过”状态// 1 -》 2 —》3// 1-》4-》3 是两条一样的路径#include<iostream>

2016-09-22 20:58:17 925

原创 笔记_postMessage/sendMessage/getMessage/peekMessage

1、 首先PostMessage是异步消息投放,SendMessage是同步消息投放函数原型:LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);同步投放的SendMessage函数并不讲消息放到消息队列中,而是直接为制定窗口调用函数处理函数,待消息处理函数完成处理后,并将消息处理函数的结果返回。

2016-08-05 20:11:27 577

原创 站在股市的风口,如何买股票(动态规划问题)

题目描述 风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:

2016-08-03 20:05:45 651

原创 找零钱问题中动态优化的空间复杂度优化

找零钱问题假设,老王有N张纸币,纸币的面值用arr[N]表示,现在老王要给隔壁的老李M元钱,请问,如何组合手中的纸币,使给出的纸币张数最少?如果可以,返回最少的纸币张数,否则返回-1。问题分析 假如要给老李10元钱,老王的手中又有一张5元的纸币,那么,能使用该5五元钱的的情况必须是其他的纸币能组合成剩下的5元钱。 -》 动态规划问题!!! 基础算法,用一个 N*(M+1) 维的数组res来作为状

2016-06-13 22:15:16 814

转载 类斐波那契问题中动态规划的时间复杂度优化

关键思路 (1)从递推公式求解状态转移方程->转移矩阵 f(n)= f(n-1)+f(n-2) [f(n),f(n-1)] = [ f(1), f(2)] * [(1,1);(1,0)]^(n-2) (2)优化求矩阵的幂问题!!!#include <iostream>using namespace std; void matrixMulti(int const m1[][

2016-06-13 11:36:22 1072

原创 leetcode之palindrome-partitioning-ii(动态规划)

题目描述Given a string s, partition s such that every substring of the partition is a palindrome. Return the minimum cuts needed for a palindrome partitioning of s. For example, given s =”aab”, Return1s

2016-06-12 19:38:16 631

原创 leetcode之single number

Question: Given an array of integers, every element appears three times except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you implement it wit

2016-06-12 15:09:47 321

转载 c++中string 与 double或int之间的转换

1、使用c标准库 atoi(); atof();#include <cstdlib>#include <iostream>#include <string>int main(){ string str = "123"; int num_int = atoi(str.c_str()); if (errno == ERANGE) //可能是std::er

2016-06-03 22:14:18 1102

转载 逆序对问题的另一种经典解法:归并排序

逆序对问题: 在树状数组的应用中已经对逆序对问题进行了一次解答。 下面说明另一种经典解法:归并排序#include <iostream>#include <stdio.h>using namespace std;int num[1005];int temp[1005];int ans;int merge_sort(int s, int e){ if(s == e) // 返回

2016-05-30 10:18:40 396

转载 (学习笔记)从引用参数谈到左右值

关键点1: 非常量引用的初始值必须为左值! 什么是左值? 能放在等号左边的值? 关键点2: 左值是可以对其取地址的值!这是一个区分左值和右值的便捷方法。 这意味着,左值是一个存储在内存中的某个存储单元的数据,该数据的值是可以被改变的! 这也就是为什么“非常量的”引用值必须是左值的原因了!!!看下面的题目: 有下面一个类声明:class A{ public: i

2016-05-29 21:36:07 817

转载 树状数组及其应用(2)

上一篇Blog讲述了树状数组的基本性质以及最典型应用:单点更新与区间求职 本文将给出树状数组的另外两种应用: (1)区间更新与单点求值! (2)求逆序对!首先,来回顾一下什么是单点更新与区间求值:在该应用中,现状数组的值实际上是存储了简单数组中某一个区间范围内的所有元素的和:C[4] = A[4]+C[3]+ C[2] = A[1]+A[2]+A[3]+A[4]在这样的情况下,点更新和区

2016-05-27 20:45:18 540 1

原创 树状数组与其应用(Python实现)(1)

数组-树状数组如果程序需要维护一个数组的**前缀和**,S[i] = a[0]+ a[1] + …… + a[i-1]. 那么一旦数组中的一个元素 a[k]发生改变,则S[k+1] …… S[N] 都会发生变化(N是数组长度)。最坏情况下,前缀和的更新需要O(N)时间,当n很大而数组数据又经常变化时,程序的运行效率就会变得很低。对于该类问题,运用**树状数组**是一个不错的选择(另一种方法是**线段

2016-05-26 15:28:02 2775

转载 整理一下常用的Linux命令(1)(未完待续)

cat 和 morecat: 作用:连接并显示指定的一个或者多个文件的有关信息 使用方式:cat[选项]文件1 文件2 … -n:由第1行开始对所有输出的行号编号 -b:和-n一样不过对于空白行不编号 列子:cat -n hello.c hello1.cmore: 作用:类似cat,不过会以一页一页的显示方便使用者一页页阅读 使用方法:more [选项] 文件名 例子:more

2016-05-25 15:22:45 365

翻译 KMP算法,Next跳转表的应用(1)

题目: 定义一个字符串间的运算符 “*”: a=’abc’; b = “def” -> a*b = “abcdef”; a^0 = “” (空字符串) a^(n+1) = a*a^n 现输入一系列的字符串,求对于输入的字符串s,是否存在一个s的子串a,使得 s = a^n; 若存在,求出最小长度的a,以及对应的n的值,此时n应该达到最大值。分析: 首先,在最不理想的状态下: s = s

2016-05-24 10:38:52 723

原创 使用Python语言写一个简单的KMP模式匹配算法实现

KMP算法简介 KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内(O(m+n):m和n分别为模式字符串与主串的长度)完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。 KMP模式匹配的关键点在于该算法会根据模式字符串生成一个Next跳转表。在进行匹配时,一旦发生不匹配,算法并是将模式串移动1位,再从头开始匹配,而是

2016-05-23 17:03:20 2226

转载 [转载]巧用二进制实现0/1状态的枚举

0/1枚举问题 假设有n个杯子,每个杯子里都装有不同的数量的钱,你可以任意的选择其中的任意数量个杯子带走,请问你有多少种不同收获结果? 思路 每一个杯子都有选择或者不选择两种状态,在不考虑复杂度的情况下,可以进行2^n次枚举,获取每一种情况下的结果! 那么如何实现对2^n中情况下的枚举呢???? 考虑,对于数 0 ~2^n-1,任意两个不同的数的二进制表示都是不同的,他们每一位的0或1可以

2016-05-04 19:40:45 778 1

转载 输入输出流

预定义流类的对象与通用的流运算符 (1)cin (2)cout (3)cerr是ostream类对象,在标准输出设备上显示错误信息(不带缓冲,立即显示)输入输出流 ostream 和 ofstream istream 和 ifstream fstream 定义文件输出流对象fstream outfile;//定义文件流并初始化//fs

2016-05-03 23:35:43 461

翻译 动态规划-问题示例与解题思路(采药问题 - nefu19)

题目: 有一个药圃中种了一些药材,采摘不同药材需要不同的时间,可以获得不同的收益,问在给定时间T内,采摘药材可以获得的最高的收益! * 输入: 第一行输入两个整数T和M,分别为给定时间和药材的数量;第2至第M+1行输入药材的采摘时间t和价值* eg: 70 3 71 100 69 1 1 2 输出: 3解题思路:设想在给定的时间t中,用了t1时间来采摘一定的药材

2016-05-03 20:02:47 666

转载 [编程题]确定两串乱序同构的几种解答方式

题干:给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。 测试样例: “This is nowcoder”,”is This nowcoder” 返回:

2016-05-02 19:31:33 507

原创 First Blog!

c/c++中的输入输出getline() cin>> cin.ignore()字符串的比较_stricmp() #include

2016-05-02 18:43:48 317

空空如也

空空如也

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

TA关注的人

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