请找出下面程序的 bug? int maxProfit2(vector<int> &prices) { int local[3] = {0}; int global[3] = {0}; for(int i=0; i<prices.size()-1; ++i) { int diff = prices[i+1] - prices[i]; for(int j=2; j>=1; --j) { local[j] = max(global[j-1]+max(diff, 0), loca…
在STL中有着一个类就是string类,他的内存布局和存储机制究竟是怎么样的呢? 这就是建立好的string 可以看出,图中用黄色框框标注的部分就是主要区域 我们用来给string对象进行初始化的字符串被存储在了_Buf当中,_Mysize和_Myres就不用说了,就是上面的size 和 capacity 的值.   当只有一个字符作为字符串的时候,就可以很明显的看出来了,_Mysize是指字符串的length _Myres还是没有改变,_Myres最大就是15么? 此时还没有变化,再加入一个字…
嗯...   不得不说c++中的STL库是一个神奇的东西   可以使你的代码显得更加简洁....   今天就只讲STL中的三个鬼畜:   max       min       swap   具体操作见代码!!!   #include<cstdio> #include<algorithm>//此头文件包含了有关于算法的一些东西 using namespace std; int main() { //调用STL中的鬼畜 max(,);//只支持两个数,找出两个数中较大的一个数 min…
最近在写一个自己的js库,正写到数组包,在里面定义了一个排序,只对纯数字数据进行排序的方法,但是在测试的时候发现一个很诡异的问题,那就是传入一个对象的时候,它没有返回erroemsg而是返回了对象,上代码: array.sort=function(a){//only for num try{ if(!a.some(function(x){return(typeof("string"))})){ var max=a.length-1; for(var j=0;j<max;j++){…
在设计抽奖一类程序中,有时会需要一种概率“有较大可能获得一个普通结果,有较小可能获得一个糟糕或极好的结果”,这就可以用正态分布函数来获得这样一个结果. STL中已经提供了一系列随机分布的函数,包括正态分布,泊松分布等 头文件: random 函数: std::normal_distribution<type> distribution( σ,μ ) 其中σ为正态分布的平均数学期望,也就是正态曲线中高峰的x值,μ值越大曲线坡度约缓,反之则越陡,在x轴上, (0,σ * μ) 占据了曲线的大部分空…
简单说来 set(集合)里的元素 不会有相同元素(也就是说 相同的值不存 )并且 存进去会自动排序  类比sort默认排序从小到大 set排序也是 set/multiset会根据待定的排序准则,自动将元素排序.两者不同在于前者不允许元素重复(重复元素只操作一遍,其他的忽略处理),而后者允许.(因为插入的时候,它们分别调用的是insert和unique_insert) 同理,map和multimap也是这个意思.set.map它们的底层都是基于红黑树. set作为一个容器也是用来存储同一数据类型的…
#include<iostream> #include<cstdio> #include<set> using namespace std; set<int> a; int main() { //插入元素 a.insert(); a.insert(); a.insert(); //用迭代器遍历容器; set<int>::iterator it; for(it=a.begin(); it!=a.end(); it++) { cout<<…
equal_range根据键值,返回一对迭代器的pair对象.如果该键值在容器中存在,则pair对象中的第一个迭代器指向该键关联的第一个实例,第二个迭代器指向该键关联的最后一个实例的下一位置.如果找不到匹配的元素,则pair对象中的两个迭代器都将指向此键应该插入的位置.总之,equal_range返回迭代器位置区间 [ lower_bound, upper_bound ) .见以下例子: #include <iostream> #include <map> int main ()…
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { vector<int> vec; vec.push_back();//在尾部插入元素 vec.push_back(); // cout<<vec[1];//按下标访问元素,从[0]开始 /* //使用迭代器访问元素 vector<int>::iterator…
#include<iostream> #include<cstdio> #include<map> //按键值大小构成二叉搜索树 using namespace std; map<int, string> a; int main() { a.insert(map<,"li")); a.insert(map<,"LI"));//键值存在,插入失败 a.insert(pair<, "yang&q…