<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fjqcyq2的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fjqcyq2</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fjqcyq2]]></copyright><item><title><![CDATA[丑数]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48931969</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48931969</guid><author>fjqcyq2</author><pubDate>Tue, 06 Oct 2015 15:58:25 +0800</pubDate><description><![CDATA[题目：我们把只包含因子2、3和5的数称作丑数（Ugly Number）。例如6、8都是丑数，但14不是，因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数 
暴力求解方法虽然简单，但是时间复杂度太高。剑指offer上有如下代码：int ThreeMin(int a, int b, int c){
    int result = a<b?a:b;
    resu]]></description><category></category></item><item><title><![CDATA[Magic Index 分析]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48931469</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48931469</guid><author>fjqcyq2</author><pubDate>Tue, 06 Oct 2015 14:52:27 +0800</pubDate><description><![CDATA[给定一个数组A，其中有一个位置被称为Magic Index，含义是：如果i是Magic Index，则A[i] = i。假设A中的元素递增有序、且不重复，请给出方法，找到这个Magic Index。更进一步，当A中允许有重复的元素，该怎么办呢？没有重复元素的情况一些同学在遇到这个题目的时候，往往会觉得比较简单。扫描一遍，不就ok了么？O(n)的。很简单呀。可是，大家要注意到，还有一个条件没有用：A中]]></description><category></category></item><item><title><![CDATA[《编程之美》小飞的电梯调度算法]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48930521</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48930521</guid><author>fjqcyq2</author><pubDate>Tue, 06 Oct 2015 11:36:03 +0800</pubDate><description><![CDATA[亚洲微软研究院所在的希格玛大厦一共有6部电梯。在高峰时间，每层都有人上下，电梯每层都停。实习生小飞常常会被每层都停的电梯弄的很不耐烦，于是他提出了这样一个办法： 
由于楼层并不算太高，那么在繁忙的上下班时间，每次电梯从一层往上走时，我们只允许电梯停在其中的某一层。所有乘客从一楼上电梯，到达某层后，电梯停下来，所有乘客再从这里爬楼梯到自己的目的层。在一楼的时候，每个乘客选择自己的目的层，电梯则计算出应]]></description><category></category></item><item><title><![CDATA[一个数组中只有0,1,2三个元素，进行排序，要求时间复杂度为O(n)]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48929825</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48929825</guid><author>fjqcyq2</author><pubDate>Tue, 06 Oct 2015 10:03:42 +0800</pubDate><description><![CDATA[思路： 
设置三个标记指针，pos0，pos2，cur 
令pos0从前往后遍历，指向第一个非0的位置，pos2从后往前遍历，指向第一个非2的位置 
然后cur从pos0开始往后遍历： 
遇到0就和pos0交换，pos0++; 
遇到1什么也不做; 
遇到2就和pos2交换，pos2向前滑动到下一个非2的位置，交换后还要重新检查cur的值； 
直到cur与pos2相遇。 
一次遍历，复杂度是O(n)]]></description><category></category></item><item><title><![CDATA[八皇后问题--递归和非递归]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48914569</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48914569</guid><author>fjqcyq2</author><pubDate>Mon, 05 Oct 2015 15:59:20 +0800</pubDate><description><![CDATA[八皇后问题是一个以国际象棋为背景的问题：如何能够在 8×8 的国际象棋棋盘上放置八个皇后，使得任何一个皇后都无法直接吃掉其他的皇后？为了达到此目的，任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题：这时棋盘的大小变为n×n，而皇后个数也变成n。这个问题简化描述就是：在8x8的棋盘上放8颗子，要求它们【不在同一行】【不在同一列】【不在同一斜线】上。面对问题，我们]]></description><category></category></item><item><title><![CDATA[剑指offer--字符串的排列]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48913047</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48913047</guid><author>fjqcyq2</author><pubDate>Mon, 05 Oct 2015 11:11:39 +0800</pubDate><description><![CDATA[题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。  
上代码：class Solution {
public:
    void permute(string prefix, string str, vector<string> &v1){]]></description><category></category></item><item><title><![CDATA[C++ map容器 按照value值排序]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48897369</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48897369</guid><author>fjqcyq2</author><pubDate>Sun, 04 Oct 2015 17:19:48 +0800</pubDate><description><![CDATA[正常的map默认按照key值排序，而map又没有像vector一样的sort()函数，那么如果将map按照value值排序呢？有两种方法：**方法1. 将map中的key和value分别存放在一个pair类型的vector中，然后利用vector的sort函数排序，其中map_verb存放我的map值： 
存放我的map值：**#include<algorithm>typedef pair<stri]]></description><category></category></item><item><title><![CDATA[三种工厂模式的C++实现]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48895111</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48895111</guid><author>fjqcyq2</author><pubDate>Sun, 04 Oct 2015 11:16:05 +0800</pubDate><description><![CDATA[三种工厂模式的C++实现：SoapBase, SFJ,XSL,NAS等 
http://blog.youkuaiyun.com/silangquan/article/details/20492293]]></description><category></category></item><item><title><![CDATA[C++设计模式——单例模式]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48894487</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48894487</guid><author>fjqcyq2</author><pubDate>Sun, 04 Oct 2015 09:22:38 +0800</pubDate><description><![CDATA[参考网址 ：  http://www.jellythink.com/archives/82]]></description><category></category></item><item><title><![CDATA[C++ static、const和static const 以及它们的初始化]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48881385</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48881385</guid><author>fjqcyq2</author><pubDate>Sat, 03 Oct 2015 22:13:46 +0800</pubDate><description><![CDATA[const定义的常量在超出其作用域之后其空间会被释放，而static定义的静态常量在函数执行后不会释放其存储空间。 
      static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的，而不是和类的具体对象相关的。即使没有具体对象，也能调用类的静态成员函数和成员变量。一般类的静态函数几乎就是一个全局函数，只不过它的作用域限于包含它的文件中。 
      在C++中，static静态]]></description><category></category></item><item><title><![CDATA[如何限制对象只能建立在堆上或者栈上]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48880315</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48880315</guid><author>fjqcyq2</author><pubDate>Sat, 03 Oct 2015 20:28:40 +0800</pubDate><description><![CDATA[在C++中，类的对象建立分为两种，一种是静态建立，如A a；另一种是动态建立，如A* ptr=new A；这两种方式是有区别的。    静态建立一个类对象，是由编译器为对象在栈空间中分配内存，是通过直接移动栈顶指针，挪出适当的空间，然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法，直接调用类的构造函数。    动态建立类对象，是使用new运算符将对象建立在堆空间中。这个过程分为两步，第一]]></description><category></category></item><item><title><![CDATA[旋转有序数组的二分查找]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48879861</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48879861</guid><author>fjqcyq2</author><pubDate>Sat, 03 Oct 2015 19:11:36 +0800</pubDate><description><![CDATA[总结规律，简化模型 
题目都不难，重要的是很敏锐的发现问题的规律。旋转有序数组的二分搜索,如 
int arr[N] = {15,16,19,20,25,1,3,4,5,7,10,14}; 
查找X = 5 
主要思想： 
每次根据L和R求出M后，M左边[L, M]和右边[M+1, R]这两部分中至少一个是有序的。 
arr[M]和X比较 
(1). arr[M]==X，返回M 
(2). arr[]]></description><category></category></item><item><title><![CDATA[最长重复子串与最长重复子序列]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48183765</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48183765</guid><author>fjqcyq2</author><pubDate>Wed, 02 Sep 2015 21:03:03 +0800</pubDate><description><![CDATA[仅为自己做个记录，仅供参考]]></description><category></category></item><item><title><![CDATA[最长不下降子序列的O(n)算法]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48182753</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48182753</guid><author>fjqcyq2</author><pubDate>Wed, 02 Sep 2015 20:00:39 +0800</pubDate><description><![CDATA[最长不下降子序列(LIS:Longest Increasing Subsequence) 
问题描述：给出n个数，求出其最长不下降子序列的长度，比如n=5，5个数是{4,6,5,7,3}；其最长下降子序列就是{4,6,7}，长度为3。 
看了好多网上的算法一般的都是O(N^2), 最好的是O(NLogN). 我想到一个能在O(N)的时间内解决这个问题。 
具体方案如下： 
该问题可以转换为剑指off]]></description><category></category></item><item><title><![CDATA[关于memset函数]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48154667</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48154667</guid><author>fjqcyq2</author><pubDate>Tue, 01 Sep 2015 10:31:31 +0800</pubDate><description><![CDATA[今天突然发现memset的原理，如memset(p,0,sizeof(p))，这句话特别常见，讲所有的元素初始化为0，但是memset(p,1,sizeof(p))，却是将所有的元素初始化为16843009，以前也知道不能初始化为1，但是原因就不得而知了。那天研究别人代码，发现一句相当于是memset(p,243,sizeof(p))的语句，却是把整个数组赋值为-202116109，我十分不解。。本]]></description><category></category></item><item><title><![CDATA[求字符串中最长无重复字符的子串]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48154615</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48154615</guid><author>fjqcyq2</author><pubDate>Tue, 01 Sep 2015 10:28:04 +0800</pubDate><description><![CDATA[题目：求一个字符串中最长的没有重复字符的子串。 
例如字符串“abcdaefgh” 
使用hash表记录是否之前的字符出现，具体代码如下：//O(N^2)的时间复杂度
int max_unique_substring2(char * str) 
{
    int i,j;
    int begin;
    int maxlen = 0;
    int hash[256];
    int n]]></description><category></category></item><item><title><![CDATA[字符串全排列]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/48086365</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/48086365</guid><author>fjqcyq2</author><pubDate>Sat, 29 Aug 2015 12:02:08 +0800</pubDate><description><![CDATA[字符串全排列问题：给定字符串S，生成该字符串的全排列。方法：依次从字符串中取出一个字符作为最终排列的第一个字符，对剩余字符组成的字符串生成全排列，最终结果为取出的字符和剩余子串全排列的组合：#include <iostream>
#include <string>
using namespace std;void permute(string prefix, string str)
{
    if]]></description><category></category></item><item><title><![CDATA[给定一个奇数n，比如n=3，生成1到n平方的数，如1到9，填入九宫格，使得横竖斜的和都相等。]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/47720899</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/47720899</guid><author>fjqcyq2</author><pubDate>Mon, 17 Aug 2015 09:51:39 +0800</pubDate><description><![CDATA[给定一个奇数n，比如n=3，生成1到n平方的数，如1到9，填入九宫格，使得横竖斜的和都相等。如题，给定一个奇数n，然后填充n*n的矩阵方格，使得矩阵中的每行、每列、斜对角线的和均相等。并且填的数字都不同，且正好为[1, n*n]之间的整数。 
该题的大致思路是这样的： 
以n等于3为例，首先将第0行第1列填充为1，然后向右向上逐渐递增填写数字。具体代码如下：void nineGongGe( int]]></description><category></category></item><item><title><![CDATA[大数乘法]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/47449489</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/47449489</guid><author>fjqcyq2</author><pubDate>Wed, 12 Aug 2015 19:33:29 +0800</pubDate><description><![CDATA[大数乘法 
一般来说涉及到大数的，都会先将其转换为字符串，然后根据进行对应的字符串运算，最后再将结果输出。#include<iostream>
#include<string>
using namespace std;
int bigMultiply();
int main()
{
    char str1[1000],str2[1000];
    int i,j,len1,len2,len;]]></description><category></category></item><item><title><![CDATA[KMP小计]]></title><link>https://blog.youkuaiyun.com/fjqcyq2/article/details/47445441</link><guid>https://blog.youkuaiyun.com/fjqcyq2/article/details/47445441</guid><author>fjqcyq2</author><pubDate>Wed, 12 Aug 2015 15:27:35 +0800</pubDate><description><![CDATA[KMP之前一直困扰了好久，说抽时间搞明白也是一直没时间，现在有点明白，但又时间太紧，所以仅记个大概来，方便我自己以后回顾。KMP之所以效率比较高，是因为模式串中有重复的元素。设S为主串，则要匹配的模式串就是T串。也就是说T串中有重复的元素，比如： 
T = “abababc” 可以看出abababc中有重复的串，即前四位abab与从第2-5位的串是一样的（从0开始） 
则根据其他参考资料，T的nex]]></description><category></category></item></channel></rss>