自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ChenLI's blog

The closer you are to death, the more alive you feel. Such a wonderful way to live.

  • 博客(121)
  • 资源 (1)
  • 收藏
  • 关注

原创 Codeforces Round #387 (Div. 2)

这次比赛的感受:一个字,燃!许久没打CF了,比赛的时候一下子出了4道题,还是挺激动。。。尽管C题最后挂了TAT。以下是题解:—————————————————————————————————分割线——————————————————————————————第一题: Display Size (http://codeforces.com/contest/747/problem/A)

2016-12-19 12:58:19 939

原创 The termination conditions about the binary search

About some thoughts of binary search:To avoid some confusion of the binary search, like dead-loop or something.Every time i write binary search, i always use the 'while' condition like this:int

2016-11-04 11:09:16 568

原创 XCode can't open file (ifstream/ofstream) in C++ (XCode C++无法读写文件)

最近用XCODE读写不了文件,以下是解决方案,亲测可行:Put your .txt files in the same directory where your main.cpp file is (or anywhere you like).In Xcode go to Product > Scheme > Edit Scheme > Run test (on the right) >

2016-10-03 10:49:11 6437

原创 C/C++ 读取文件

参考网站0 (key):http://www.cnblogs.com/JCSU/articles/1190685.html参考网站1:http://blog.csdn.net/stpeace/article/details/12404925Key content:假设有一个叫 data.txt 的文件, 它包含以下内容: Fry: One Jillion d

2016-10-03 10:07:15 2843

转载 100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?

首先必须清楚中位数的定义:中位数(又称中值,英语:Median),统计学中的专有名词,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。对于有限的数集,可以通过把所有观察值高低排序后找出正中间的一个作为中位数。如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数。然后这个题答案:内存足够的情况: 可以使⽤用类似quick sort的

2016-09-28 14:10:10 2254

原创 Map erase的两种方法

方法一:[cpp] view plaincopystd::map mapTest;  bool TestVal(const std::string & val);    ......  std::map::iterator it = mapTest.begin();  while(it != mapTest.end

2016-09-28 05:13:46 6402

原创 理解个KMP怎么这么难= =#

理解过程中的参考网站:1. http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html2. http://blog.csdn.net/v_july_v/article/details/70418273. http://www.ituring.com.cn/artic

2016-09-26 06:33:51 1692

原创 C++ STL insert

1. insert具体介绍:http://www.cplusplus.com/reference/vector/vector/insert/2. insert用法:single element (1)  iterator insert (const_iterator position, const value_type& val);fill (2) iterator inser

2016-09-21 13:08:33 1134

转载 反向迭代器(rbegin, rend)及其与(begin, end)的关系

C++ primer (中文版第四版)第273页9.3.2 begin和end成员        begin和end操作产生指向容器内第一个元素和最后一个元素的下一个位置的迭代器,如下所示。这两个迭代器通常用于标记包含容器中所有元素的迭代范围。c.begin() 返回一个迭代器,它指向容器c的第一个元素c.end() 返回一个迭代器,它指向容器c的最后一个元素的下一个位置c.r

2016-09-21 01:42:59 12447 2

原创 Leetcode 293有感,有unsigned int一定要显示转换!

同样,不要将无符号数与有符号数进行比较!https://leetcode.com/submissions/detail/74053490/Leetcode 293有感,题目链接:https://leetcode.com/problems/flip-game/错误的做法:class Solution {public: vector generatePossi

2016-09-13 07:08:55 570

原创 STL vector陌生功能详解: insert

1. Insert功能vector.insert(迭代器, 要插入在迭代器指示位置前面的元素)例子如下:#include #include using namespace std;int main(){ vector v(3); v[0]=2; v[1]=7; v[2]=9; vector::iterator it;

2016-09-13 01:51:43 593

转载 友元类(Friend)是啥?

友元是指:采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分(注意友元函数不是类的一部分),但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全

2016-09-10 07:11:29 1601

转载 priority_queue详解

《由于对priority还不是特别理解其用法,进一步找到一篇特别好的将priority_queue的文章,在此分享》——————————————————————————————————————————————————————————————优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序每次的push和pop操作,队列都会动态的

2016-09-10 07:10:03 457

原创 stack, queue, dequeue, heap和priority_queue

1. 名词解释stack 栈queue 队列dequeue (deque,全名double-ended queue)是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。heap 堆priority_queue 优先队列2. STL中Stack用法stack 模板类的定义在头文

2016-09-10 06:42:42 2034

转载 C++中堆和栈(非数据结构的heap and stack)的完全解析

内存分配方面:堆: 操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删 除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样代码 中的delete语句才能正确的释放本内存空间。我们常说的内存泄露,最常见的就是堆泄露(还有资源泄露),它是指程序在

2016-09-10 06:11:38 999

原创 C++ STL 容器类总结

零. 背景介绍为什么要讲容器,因为容器是STL中最不可或缺的一部分:STL可分为容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adapters)、算法(algorithms)、仿函数(functors)六个部分。对于常用的一些容器和容器适配器(可以看作由其它容器实现的容器),可以通过下表总结一下它们和相应头文件

2016-09-09 14:55:10 1035

原创 C++ bitset用法

用法见代码与注释:#include //使用bitset需要include #include using namespace std;int main(){ //bitset 使用整数初始化bitset bitset bs(7); //输出bs各个位的值 cout<<"bs[0] is "<<bs[0]<<endl; cout<<"

2016-08-25 09:44:33 591

原创 为什么快速排序在数组的情况下比归并排序快

(2)快速排序和归并排序的时间复杂度都是O(N lgN),但是CLRS说了,实践证明快速排序的速度比归并排序的速度更快,为什么呢?另外其实这个结论是有限制范围的,当对数组进行排序的时候,这个结论适用。为什么对于链表,却是归并排序的速度优于快速排序呢?这里看到的一段对比说得挺好,直接抄过来。One of the main sources of efficiency in quicksort

2016-08-23 09:51:03 6250 4

原创 C++跑程序所花时间

#include #include using namespace std;int main(){ clock_t s,f; s=clock(); // Insert the code you want to calculate the total time. f=clock(); double d=(double)(f-s)/CLOCKS_PER_

2016-08-13 20:59:07 1012

原创 leetcode 374—注意溢出,二分左边界,右边界

题目链接:https://leetcode.com/problems/guess-number-higher-or-lower/正解:// Forward declaration of guess API.// @param num, your guess// @return -1 if my number is lower, 1 if my number is hig

2016-08-03 20:05:23 525

原创 leetcode 290有感—永远不要比较无符号数与有符号数

题目链接:https://leetcode.com/problems/word-pattern/一开始wrong answer的做法:class Solution {public: bool wordPattern(string pattern, string str) { unordered_map a; unordered_ma

2016-06-22 10:53:52 582

原创 C++ string erase //适用于所有C++ 容器

erase函数的原型如下:(1)string& erase ( size_t pos = 0, size_t n = npos );(2)iterator erase ( iterator position);(3)iterator erase ( iterator first, iterator last);也就是说有三种用法:(1)erase(pos,n); 删除从

2016-06-21 21:08:09 532

原创 C++实现Java的split()函数

众所周知,java对于string的split函数非常好用,但是C++标准库函数中并没有对于此函数的用法,以下是三种手动实现split()的方法:共有三种方法:1. 第一种(废话),最快的一种方法,不额外遍历string来产生一个函数,直接边遍历,边分割,边做题。2. 第二种愚笨的手写方法:vector split(string str){ in

2016-06-19 22:24:05 1226 1

原创 C++中string和int的相互装换——三种做法

string装换为int string str;char * a=str.c_str();int value=atoi(char* a);int转换为string # include # include int转换为stringstring str;int num;cin>>num;str=to_string(num);或者

2016-06-15 23:09:44 3268

原创 C++ heap学习

1. C++并没有一个叫heap的STLheap并不属于STL容器组件,它分为 max heap 和min heap,在缺省情况下,max-heap是优先队列(priority queue)的底层实现机制。2. 关于heap的一些说明与操作如下:而这个实现机制中的max-heap实际上是以一个vector表现的完全二叉树(complete binary tree)。二叉

2016-06-09 15:43:40 5804

原创 函数声明中的const的用法和讨论

我发现,在重构operator的时候,常常变量加const XX & 和 在函数声明后面加consst。例如如下代码:struct person { string name; int age; person(string name, int age) { this->name = name;

2016-06-09 14:45:51 951

原创 map与unordered_map的区别与联系

unordered_map是很早就知道的概念,但却一直没有认真去理解,单单以为它是Boost库里对map的实现,今天在做Leetcode的题目的时候,发现了使用它的优越性,索性翻开书,并查一查资料,把它大致搞个清楚,省的以后还要再查再找,浪费时间。unordered_map是C++ Boost库中的内容,这里的unordered翻译成“无序”。但它并不是完全的“无序”的概念

2016-06-09 14:26:18 4077

原创 原码,反码,补码及相关应用

首先介绍一下三者的概念,如下所示:1. 原码原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:[+1]原 = 0000 0001[-1]原 = 1000 0001第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:[1111 1111 , 0111 1111]

2016-05-15 15:17:40 579

原创 关于vector在堆上还是在栈上的思考与vector.push_back()究竟放入的是什么

vector如果不new是在栈上的,如下面的代码:class Solution {public: vector> generate(int numRows) { vector> result; for (int i=0; i<numRows; ++i) { vector temp(i+1,1); co

2016-05-14 22:23:41 31603 8

原创 C/C++ 堆与栈的区别

堆和栈的区别:  一、堆栈空间分配区别:  1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;  2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。  二、堆栈缓存方式区别:  1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕

2016-05-14 09:42:10 709

原创 leetcode 326---Power of Three,区分floor与rint

rint (2.3) = 2.0rint (3.8) = 4.0rint (-2.3) = -2.0rint (-3.8) = -4.0floor of 2.3 is 2.0floor of 3.8 is 3.0floor of -2.3 is -3.0floor of -3.8 is -4.0floor与rint的区别如上。解题思路:1. cla

2016-05-12 15:05:01 429

原创 筛法求素数

筛法求素数:class Solution {public: int countPrimes(int n) { bool* isPrime=new bool[n]; int m=floor(sqrt(n+0.5)); vector primes; memset(isPrime, 0, sizeof(bool)*n);

2016-05-09 15:49:13 442

原创 XCODE如何像VS(visual studio)一样设置监视变量

方法1:方法2:当执行到某断点时,在GDB窗口中使用po就可以查看变量.(po = print object) 1)查看String 或其它变量。po 变量名2)查看某个Property。比如要查看item变量的name属性。po [item name]    注意,po item.name是不工作的。3)查看数组po [myArray ob

2016-05-06 08:20:11 4839

原创 Floyd判圈算法

理解的比较好的两个分析:(1)判圈后怎样计算圈的长度:http://blog.csdn.net/javasus/article/details/50015687(2)怎样找到圈的起点:http://blog.csdn.net/thestoryofsnow/article/details/6822576——————判圈的题目:1. https://leetcode

2016-05-05 15:03:14 487

原创 leetcode 169---Majority Element

题目链接:https://leetcode.com/problems/majority-element/简单的利用hashtable的做法:class Solution {public: int majorityElement(vector& nums) { map find; for (int i=0; i<nums.size(); ++i) {

2016-05-03 15:54:36 277

原创 leetcode 168---Excel Sheet Column Title--- 为什么要--n?

首先这道题的链接:https://leetcode.com/problems/excel-sheet-column-title/一开始没有太大的思路的同学可以和我一样尝试着先写出,将一个10进制数按位输出为一个string:代码如下:int main(){ int n=10123; string result; while (n) { resul

2016-05-03 15:16:56 452

原创 leecode 242---Valid Anagram

解法一:class Solution {public: bool isAnagram(string s, string t) { sort(s.begin(),s.end()); sort(t.begin(),t.end()); return s==t; }};解法二:非常巧妙的一种解法,避免了定义两个coun

2016-05-03 14:25:18 409

原创 C++杂七杂八小知识

1. memset只能将数组全部赋值为0或-1int a[size];memset(a,0/-1,sizeof(a)); 2.

2016-05-03 14:15:51 358

原创 leetcode 283---Move Zeroes&&对vector erase()和remove用法的感悟

题目:https://leetcode.com/problems/move-zeroes/题目很简单,代码如下:class Solution {public: void moveZeroes(vector& nums) { int counts=0; for (vector::iterator i=nums.begin(); i!=nums.end

2016-05-02 21:55:48 559

原创 leetcode 258---Add Digits, 关于C++中负数取余

一切源于leetcode 258---Add Digits这道题,https://leetcode.com/problems/add-digits/题目的解法很简单,有两种公式,一种是我这种笨笨的人写的:class Solution {public: int addDigits(int num) { if(num==0) return 0;

2016-05-02 11:23:48 705 1

Telelogic TAU 4.3破解版

造福人类向, 由于我只能上传60M以内的文件, 于是传到度盘了,若度盘失效,请联系我! 地址下载文件中即可见 内含Telelogic TAU 4.3的: 1. 安装文件 2. 破解安装教程 3. 妈妈说要讲诚信,请尊重他人破解和劳动成果

2014-12-07

空空如也

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

TA关注的人

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