C/C++
喝咖啡影响睡眠
这个作者很懒,什么都没留下…
展开
-
有趣的死循环
int main(){ int i , arr[10]; //先定义了i先分配 int sz = sizeof(arr)/sizeof(arr[0]); for(i = 0; i<= sz; i++) //越界访问 { printf("%d",i); a[i] = 0; } return 0; } 看似没问题的程序却陷入原创 2016-07-23 14:06:13 · 333 阅读 · 0 评论 -
【编程题】好多鱼!--大鱼吃小鱼问题
牛牛有一个鱼缸。鱼缸里面已经有n条鱼,每条鱼的大小为fishSize[i] (1 ≤ i ≤ n,均为正整数),牛牛现在想把新捕捉的鱼放入鱼缸。鱼缸内存在着大鱼吃小鱼的定律。经过观察,牛牛发现一条鱼A的大小为另外一条鱼B大小的2倍到10倍(包括2倍大小和10倍大小),鱼A会吃掉鱼B。考虑到这个,牛牛要放入的鱼就需要保证: 1、放进去的鱼是安全的,不会被其他鱼吃掉 2、这条鱼放进去也不能吃掉其原创 2017-04-06 23:27:44 · 2276 阅读 · 0 评论 -
关于struct的内存对齐问题
内存对齐1. 成员对齐:对于结构体的每个成员,起始地址的偏移量必须为该变量类型所占字节的整数倍。 2. 结构体对齐:结构体中占字节最多的成员叫边界成员,整个结构体所用空间必须是边界成员所占字节的整数倍。 3. 编译器的对齐指令: 通常不需要我们考虑对齐方式问题,编译器会自动选择合适的策略,但也可以通过命令设置: *#pragma pack(n)* 可以设定变量以n字节方式对原创 2017-04-04 16:16:18 · 675 阅读 · 0 评论 -
浅谈大端模式和小端模式
什么是大端和小端 1) Little-Endian(小端)就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。 2) Big-Endian(大端)就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 举一个例子,比如数字0x12 34 56 78在内存中的表示形式为: 可见,大端模式和字符串的存储模式类似。 大小端各自的优点原创 2017-04-04 17:08:27 · 4702 阅读 · 0 评论 -
实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
题目:实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1) 方法一: 用一个栈,每次入栈push两个数(第一个是要入栈的,第二个就是当前最小值),出栈时也出两个 这样栈顶元素就是最小值,代码如下: class Stack { public: void push(int value原创 2017-07-20 00:10:57 · 987 阅读 · 0 评论 -
查找一个字符串中第一个只出现两次的字符
题目:查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1) 思路: 创建一个辅助数组(大小为256),数组的下标表示字符的ASCII码,遍历字符串,每出现一个,在对应位置加一,最后遍历数组就可以找到第一个出现两次的字符 代码: char find_char_ins原创 2017-07-20 00:46:09 · 740 阅读 · 0 评论 -
[编程题]循环单词
如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如:picture 和 turepic 就是属于同一种循环单词。 现在给出n个单词,需要统计这个n个单词中有多少种循环单词。原创 2017-04-06 23:29:41 · 1466 阅读 · 0 评论