自定义博客皮肤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)
  • 收藏
  • 关注

原创 .260. Single Number III

class Solution {public: vector singleNumber(vector& nums) { int result=0; for(auto n : nums) result^=n; result=~(result-1)&result; vector ret={0,0};

2016-08-30 16:01:34 319

原创 .371. Sum of Two Integers

class Solution {public: int getSum(int a, int b) { while(b) //直到没有进位 { int c=a^b; //先不管进位 b=(a&b)<<1; //进位 a=c; //到这里:相当于a为一个值,b为进位值。

2016-08-22 22:49:49 305

原创 242. Valid Anagram

class Solution {public: bool isAnagram(string s, string t) { if (s.length() != t.length()) return false; int n = s.length(); unordered_map counts; for (int i = 0;

2016-09-08 00:49:26 389

原创 357. Count Numbers with Unique Digits

class Solution {public: int countNumbersWithUniqueDigits(int n) { int ret=1; int product=1; for(int i=0,j=9;i<n;i++) { ret+=product*9; prod

2016-09-07 21:08:09 348

原创 171. Excel Sheet Column Number

class Solution {public: int titleToNumber(string s) { int ret=0; for(auto ch : s) ret=ret*26+ch-'A'+1; return ret; }};

2016-09-06 09:57:04 411

原创 122. Best Time to Buy and Sell Stock II

int maxProfit(vector &prices) { int ret = 0; for (size_t p = 1; p < prices.size(); ++p) ret += max(prices[p] - prices[p - 1], 0); return ret;}/*class Solution {public: i

2016-09-06 09:45:18 277

原创 100. Same Tree

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */clas

2016-09-05 13:15:27 290

原创 349. Intersection of Two Arrays

class Solution {public: vector intersection(vector& nums1, vector& nums2) { unordered_set s(nums1.begin(),nums1.end()); vector ret; for(auto x : nums2) if(s.er

2016-09-05 11:09:51 249

原创 238. Product of Array Except Self

class Solution {public: vector productExceptSelf(vector& nums) { int n=nums.size(); int fromBegin=1; int fromLast=1; vector res(n,1); for(int i=0;

2016-09-05 09:33:38 255

原创 283. Move Zeroes

class Solution {public: void moveZeroes(vector& nums) { int first=0; while(first<nums.size()&&nums[first]) first++; int second=first+1; while(1)

2016-08-30 17:07:53 362

原创 226. Invert Binary Tree

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */clas

2016-08-30 15:07:36 287

原创 389. Find the Difference

class Solution {public: char findTheDifference(string s, string t) { /*vector count(26,0); for(int i=0;i<s.size();i++) count[s[i]-'a']++; for(int i=0;i<t.size(

2016-08-30 11:04:43 364

原创 167. Two Sum II - Input array is sorted

class Solution {public: vector twoSum(vector& numbers, int target) { int i=0; int j=numbers.size()-1; while(1) { int sum=numbers[i]+numbers[j];

2016-08-30 09:51:27 367

原创 104. Maximum Depth of Binary Tree

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */clas

2016-08-30 09:36:56 400

原创 258. Add Digits

class Solution {public: int addDigits(int num) { return num-(num-1)/9*9; //return num?1+(num-1)%9:0; //return 1+(num-1)%9; //-1%9=-1 }};

2016-08-23 00:24:24 273

原创 136. Single Number

class Solution {public: int singleNumber(vector& nums) { int result=0; for(auto iter=nums.begin();iter!=nums.end();iter++) result^=*iter; return result; }

2016-08-22 22:59:53 298

原创 292. Nim Game

//如果是4的倍数,无论第一个人取?个,只要第二个人取(4-?)个,都是第二个人赢。所以,只要不是4的倍数,第一个人取完让剩下的是4的倍数,然后采取前面的策略就一定赢。class Solution {public: bool canWinNim(int n) { return n%4?true:false; }};

2016-08-22 21:35:14 324

原创 338. Counting Bits

//原理:2(1*2+0)就是在1的二进制表示后面加0(即和1的位数相同),3(1*2+1)就是在1的二进制表示后面加1(即比1的位数多1),4(2*2+0)就是在2的二进制表示后面加0(即和2的位数相同),5(2*2+1)就是在2的二进制表示后面加1(即比2的位数多1),以此类推。class Solution {public:    vector countBits(int num) {

2016-08-22 18:47:45 315

原创 344. Reverse String

class Solution {public: string reverseString(string s) { reverse(s.begin(),s.end()); return s; /*char temp; int left=0; int right=s.size()-1;

2016-08-22 17:52:58 335

原创 计算机网络知识点汇总

1.小端:低字节在低地址。大端:高字节在低地址。我们知道网络上的数据流是字节流,对于一个多字节数值,在进行网络传输的时候,先传递哪个字节?也就是说,当接收端收到第一个字节的时候,它是将这个字节作为高位还是低位来处理呢?网络字节序(大端):收到的第一个字节被当作高位看待,这就要求发送端发送的第一个字节是高位。而在发送端发送数据时,发送的第一个字节是该数字在内存中起始地址(低地址)对应

2016-08-05 19:02:03 647

原创 缺省参数值是静态绑定的

class A{public: virtual void func(int val=1) { std::cout"<<val<<std:endl; } virtual void test() { func(); }};class B : public A{public: void func(int val=0) { std::cout"<<val<<std:

2016-06-24 20:32:20 595

原创 浅拷贝与深拷贝 拷贝控制总结

class A{ int i;};class B{ A *p;public: B(){p=new A;} ~B(){delete p;} /* B(const B &temp) { p=temp.p; } */};void sayHello(B x){}int main(){ B b; sayHello(b); return 0;}//程

2016-06-13 18:33:26 877

原创 线程

一组并发线程运行在一个进程的上下文中。每个线程都有它自己独立的线程上下文,包括线程ID、栈、栈指针、程序计数器、条件码和通用目的寄存器值。每个线程和其他线程一起共享进程上下文的剩余部分。这包括整个用户虚拟地址空间,它是由只读文本(代码)、读/写数据、堆以及所有的共享库代码和数据区域组成的。线程也共享同样的打开文件的集合。在多线程中不加限制的随意访问非static局部变量不会导致运算结果

2016-06-13 12:28:14 680

原创 volatile

volatile:易变的,不稳定的。volatile用来声明那些可能在你的程序本身不知道的情况下会发生改变的变量。一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。对于一般变量:为提高存取速度,编译器优化时有时会先

2016-06-12 00:06:48 803

原创 构造函数的执行顺序

先执行基类的(如果基类当中有虚基类,要先执行虚基类的,都是按照继承时的顺序依次执行),再执行成员对象的(声明的顺序),最后执行自己的。(切记都不是初始化列表的顺序)

2016-06-12 00:02:43 1143

原创 运行时类型识别(RTTI)

实现RTTI的两个重要运算符:typeid:返回表达式的类型。dynamic_cast:用于将基类的指针或引用安全地转换成派生类的指针或引用。当我们将这两个运算符用于某种类型的指针或引用,并且该类型含有虚函数时,运算符将使用指针或者引用所绑定对象的动态类型。特别适用于此情况:我们想使用基类对象的指针或引用执行某个派生类操作并且该操作不是虚函数。1

2016-06-09 19:18:19 579

原创 关于fork函数

//请问下面的程序一共输出多少个“-”?8个。int main(){ int i; for(i = 0;i<2;i++) { fork(); printf("-"); } return 0;}//一共调用了6次printf,但是会输出8个-。因为父进程的输出缓冲也会被子进程复制。//因为标准输出是行缓冲,程序遇到"\n"、EOF、文件描述符关闭、主动flush或程序退出

2016-06-08 22:57:31 618

原创 用户态切换到内核态的3种方式

1.系统调用2.异常3.外围设备的中断

2016-06-08 15:36:38 3047

原创 调用函数时栈的活动情况

//假设在一个32位little endian的机器上运行下面的程序,结果是多少?#include int main(){ long long a=1,b=2,c=3; printf("%d %d %d\n",a,b,c); return 0;}注: a.printf()是一个库函数,C和C++中函数的参数是从右往左入栈的。b.栈的生长方向是从高往低的。

2016-06-07 09:00:48 485

原创 快速幂

int power(int b,int e){ if(e==0) return 1; if(e%2==0) return power(b*b,e/2); return b*power(b*b,e/2); }//快速幂的实现程序,可以理解为幂数被转换为二进制形式,然后对位为1的逐位乘上去。 //例如2^5将5转换成二进制101,2^1*2^4简单点的实现方式可以这样:

2016-06-07 08:52:12 579

原创 通用多态(参数多态、包含多态)特定多态(重载多态、强制多态)

1.通用多态a.参数多态:模板。b.包含多态:virtual。2.特定多态a.重载多态:b.强制多态:强制类型转换。

2016-06-05 00:33:25 3086

原创 text data bss heap stack

1.text:已编译程序的机器代码。2.data:已初始化的全局C变量。3.bss:未初始化的全局C变量。在目标文件中这个节不占据实际的空间,它仅仅是一个占位符。目标文件格式区分初始化和未初始化变量是为了空间效率:在目标文件中,未初始化变量不需要占据任何实际的磁盘空间。4.heap:5.stack:

2016-06-04 16:14:31 773

原创 C/C++知识点汇总

1.C++中类对象的内存布局和占用空间:a.非静态成员变量总合。b.编译器为了CPU计算,作出的数据对齐处理(可用#pragma pack(n)来设定变量的对齐方式)。c.为了支持虚函数,产生的额外负担。//例子:#pragma pack(2)class BU{ int number; //4 union UBffer {

2016-06-04 10:58:03 1311

原创 巧妙计算一个数二进制表示法中1的位数

//巧妙计算一个数二进制表示法中1的位数。int fun(unsigned int n){ n=(n&0x55555555)+((n>>1)&0x55555555); n=(n&0x33333333)+((n>>2)&0x33333333); n=(n&0x0f0f0f0f)+((n>>4)&0x0f0f0f0f); n=(n&0x00ff00ff)+((n>>8)&0x00ff00f

2016-06-01 12:23:14 1046

原创 C++中类对象的内存布局和占用空间

1.非静态成员变量总合。2.编译器为了CPU计算,作出的数据对齐处理。(可用#pragma pack(n)来设定变量的对齐方式)3.为了支持虚函数,产生的额外负担。//例子:#pragma pack(2)class BU{ int number; //4 union UBffer { char buffer[13];

2016-05-31 22:09:01 679

原创 纯虚函数可以有函数体

出处:《C++Primer》中文版第五版541页第22行。我们可以为纯虚函数提供定义,不过函数体必须定义在类的外部。若定义在类的内部,会出现错误:pure-specifier on function-definition。class Dummy{ //error:pure_specifier on function-definition. virtual void proce

2016-05-31 15:21:24 5166

原创 《计算机组成与设计(硬件/软件接口)》读书笔记

第一章1.组成计算机的五个典型部件是输入、输出、存储器、运算器和控制器。2.CPI表示执行每条指令所需的时钟周期数的平均值。任何一个独立的因子都不能确定性能,只有三个因子的乘积(即执行时间)才是可靠的性能度量标准。CPU时间=指令数*CPI*时钟周期时间CPU时间=指令数*CPI/时钟频率IPC(instruction per clock c

2016-05-29 10:24:33 6322 1

原创 C++命名的强制类型转换(static_cast dynamic_cast const_cast reinterpret_cast)

cast_name(expression)1.static_cast:任何具有明确定义的类型转换,只要不包含底层const(比如常量指针,而不是指针常量),都可以使用。常用于窄化转换(告诉程序的读者和编译器:我们知道并且不在乎潜在的精度损失),编译器无法自动执行的类型转换(找回存在于void*指针中的值)。a.用于类层次结构中基类和派生类之间指针或者引用的转换(up-casting把派

2016-05-25 00:49:32 999

原创 《UNIX环境高级编程》(第三版第一章)

21./dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个EOF。15./*errno可以是一个包含出错编号的整数,也可以是一个返回出错编号指针的函数。在支持多线程的环境中,多个线程共享进程地址空间,每个线程都有属于它自己的局部errno以避免一个线程干扰另一个线程。*/extern int errno;extern int *__errno_location(void);#define errno (*__errno_loc

2016-05-22 22:23:07 959

原创 一步一步写makefile

一、简单小例子//sum.c#include #include "add.h"int main(){ printf("%d\n",add(1,2));}//add.c#include "add.h"int add(int a,int b){ return a+b;}//add.hint add(int a,int b);现在开始输命令:1.

2016-05-05 16:16:47 516

空空如也

空空如也

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

TA关注的人

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