![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
WangGarrison
镜像网站 https://wanggarrison.top
展开
-
字符串算法:等宽替换,以少换多,以多换少
题目一:写一个函数将字符串中的字符*移到字符串的前部分,前面的非*字符后移,但不能改变非*字符的先后顺序,例如auto**toc**处理后为****autoc算法一:C代码://算法1:从后往前复制非*的字符,然后前面的补*int Move1(char *str)//O(n),O(n){ char *arr = (char *)malloc(strlen(str)+1); assert(arr != NULL); int i = strlen(str);//str下标 int j =原创 2020-06-23 15:55:06 · 326 阅读 · 0 评论 -
C语言位运算及其应用
位运算符位运算符允许对一个字节或更大的数据单位中独立的位做处理:可以清除、设定,或者倒置任何位或多个位。也可以将一个整数的位模式(bit pattern)向右或向左移动,针对的是二进制。注意:<<左移运算符最右边补0,>>右移运算符最左边补符号位,(记忆这两个符号方法:箭头朝哪一边就是哪一边移)位运算应用下面数据x设为1字节,即8位去掉最后一位 : (101101->10110) 算法 x >> 1在最后加一个0:(101101->10110原创 2020-06-23 15:09:22 · 427 阅读 · 0 评论 -
C语言动态内存分配malloc、calloc、realloc
动态内存根据需要动态创建需要的内存。例如根据变量创建数组,其内存区域在堆。这里简单提一下堆与栈栈:局部变量所在的内存区域,在Windows默认其大小为1M,系统自行管理其内存(即你不用管回收问题)堆:动态内存所在区域,默认大小为2G左右(不同平台有差别),程序管理内存,特别要注意内存释放从以上栈与堆的大小可以知道,堆比栈大的多,所以动态内存还有一个使用场景,即需要创建大容量的数组时malloc、calloc、reallocmalloc(字节数): 创建成功,函数返回一个指向分配起始地址的指针,失原创 2020-05-23 09:46:31 · 1028 阅读 · 0 评论 -
不使用第三个变量交换两个整数a,b的值
文章目录方法一:加法方法二:减法方法三:异或注意!通常交换两个整数a,b的值,要使用第三方变量temp,但是在一些笔试或面试中,要求不使用第三个变量来实现交换,下面总结三种方法。方法一:加法 int a = 2; int b = 5; a = a + b;//a存储两数之和7 b = a - b;//两数之和减去一个就是另一个,相当于b = 7-2,此时b已经变成最初a的值了 a = a - b;//相当于a=7-2,a的值成为最初b的值方法二:减法 int a = 2; int b原创 2020-05-21 20:03:17 · 2749 阅读 · 1 评论 -
查找两数之和
C实现求两数之和Leetcode刷题笔记给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回...原创 2020-04-19 20:50:46 · 388 阅读 · 0 评论 -
Swap函数实现交换两个整数的值,易错总结
首先正确的交换方式是如下代码:void Swap(int *p1,int *p2){ int tmp = *p1; *p1 = *p2; *p2 = tmp;}用指针直接访问存储两个整数的内存空间,实现交换,下面归纳一下易错的地方一、只交换了形参void Swap_err(int a,int b){ int tmp = a; a = b; b = tmp;}这种情况,只是交换了Swap函数里a,b的值(即只交换了形参的值),而主函数里的a,b是没有发生改变的,交换失败##原创 2020-05-17 22:29:52 · 8649 阅读 · 0 评论 -
求整数位数,以及顺序与逆序输出各位数字
题目背景:给一个正整数, 1.求它的位数,2.逆序输出每一位数字,3顺序输出每一位数字1求位数,算法: 每次丢弃个位数字,计数器++,直到n为0与我们用眼睛去数类似,即不断给该整数除以十,计数,此处要考虑当给的整数位0时的特殊情况,C代码如下:int Count(long long n) { if(n == 0) return 1; int tmp = 0; while(n !...原创 2020-04-27 22:45:44 · 813 阅读 · 0 评论