- 博客(42)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 .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
336
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 .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
324
原创 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
399
原创 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
362
原创 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
425
原创 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
289
原创 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
301
原创 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
259
原创 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
265
原创 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
375
原创 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
301
原创 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
376
原创 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
382
原创 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
413
原创 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
286
原创 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
314
原创 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
336
原创 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
328
原创 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
346
原创 计算机网络知识点汇总
1.小端:低字节在低地址。大端:高字节在低地址。我们知道网络上的数据流是字节流,对于一个多字节数值,在进行网络传输的时候,先传递哪个字节?也就是说,当接收端收到第一个字节的时候,它是将这个字节作为高位还是低位来处理呢?网络字节序(大端):收到的第一个字节被当作高位看待,这就要求发送端发送的第一个字节是高位。而在发送端发送数据时,发送的第一个字节是该数字在内存中起始地址(低地址)对应
2016-08-05 19:02:03
708
原创 缺省参数值是静态绑定的
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
619
原创 浅拷贝与深拷贝 拷贝控制总结
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
891
原创 线程
一组并发线程运行在一个进程的上下文中。每个线程都有它自己独立的线程上下文,包括线程ID、栈、栈指针、程序计数器、条件码和通用目的寄存器值。每个线程和其他线程一起共享进程上下文的剩余部分。这包括整个用户虚拟地址空间,它是由只读文本(代码)、读/写数据、堆以及所有的共享库代码和数据区域组成的。线程也共享同样的打开文件的集合。在多线程中不加限制的随意访问非static局部变量不会导致运算结果
2016-06-13 12:28:14
703
原创 volatile
volatile:易变的,不稳定的。volatile用来声明那些可能在你的程序本身不知道的情况下会发生改变的变量。一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。对于一般变量:为提高存取速度,编译器优化时有时会先
2016-06-12 00:06:48
846
原创 构造函数的执行顺序
先执行基类的(如果基类当中有虚基类,要先执行虚基类的,都是按照继承时的顺序依次执行),再执行成员对象的(声明的顺序),最后执行自己的。(切记都不是初始化列表的顺序)
2016-06-12 00:02:43
1167
原创 运行时类型识别(RTTI)
实现RTTI的两个重要运算符:typeid:返回表达式的类型。dynamic_cast:用于将基类的指针或引用安全地转换成派生类的指针或引用。当我们将这两个运算符用于某种类型的指针或引用,并且该类型含有虚函数时,运算符将使用指针或者引用所绑定对象的动态类型。特别适用于此情况:我们想使用基类对象的指针或引用执行某个派生类操作并且该操作不是虚函数。1
2016-06-09 19:18:19
592
原创 关于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
637
原创 调用函数时栈的活动情况
//假设在一个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
504
原创 快速幂
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
605
原创 通用多态(参数多态、包含多态)特定多态(重载多态、强制多态)
1.通用多态a.参数多态:模板。b.包含多态:virtual。2.特定多态a.重载多态:b.强制多态:强制类型转换。
2016-06-05 00:33:25
3164
原创 text data bss heap stack
1.text:已编译程序的机器代码。2.data:已初始化的全局C变量。3.bss:未初始化的全局C变量。在目标文件中这个节不占据实际的空间,它仅仅是一个占位符。目标文件格式区分初始化和未初始化变量是为了空间效率:在目标文件中,未初始化变量不需要占据任何实际的磁盘空间。4.heap:5.stack:
2016-06-04 16:14:31
796
原创 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
1350
原创 巧妙计算一个数二进制表示法中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
1062
原创 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
700
原创 纯虚函数可以有函数体
出处:《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
5265
原创 《计算机组成与设计(硬件/软件接口)》读书笔记
第一章1.组成计算机的五个典型部件是输入、输出、存储器、运算器和控制器。2.CPI表示执行每条指令所需的时钟周期数的平均值。任何一个独立的因子都不能确定性能,只有三个因子的乘积(即执行时间)才是可靠的性能度量标准。CPU时间=指令数*CPI*时钟周期时间CPU时间=指令数*CPI/时钟频率IPC(instruction per clock c
2016-05-29 10:24:33
6345
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
1020
原创 《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
973
原创 一步一步写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
532
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人