摘要:
升序表示越来越大 即1 2 3 4 5 6#include #include #include #include void fun(int array[], int arraySize, int index){ if(arraySize == 0)//Q:此段其实只需要第一次判断,如何实现呢? { printf("数组为空!\n"); return; } else if(index == (arraySize - 1) )//已经到最后一个,arraySize需-1 { printf("满足升序!\n"); ... 阅读全文
摘要:
使用额外数组,比如rightMin[],来帮我们记录原始数组array[i]右边(包括自己)的最小值。假如原始数组为: array[] = {7, 10, 2, 6, 19, 22, 32},那么rightMin[] = {2, 2, 2, 6, 19, 22, 32}.也就是说,7右边的最小值为2, 2右边的最小值也是2。有了这样一个额外数组,当我们从头开始遍历原始数组时,我们保存一个当前最大值 max,如果当前最大值刚好等于rightMin[i], 那么这个最大值一定满足条件。还是刚才的例子。参考来源:http://blog.jrj.com.cn/1832597331,5284403a.h 阅读全文
摘要:
函数将字符串中的字符'*'移到串的前部分,前面的非'*'字符后移,但不能改变非'*'字符的先后顺序,函数返回串中字符'*'的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间类似快慢指针 i j初值为length - 1 ,如果为0则顺序会产生一定的颠倒i指向字母,容易保证字母指针指的靠前(只要i指向字母 就跟j指向的*换位置,换位置后则i--,j-- ;i指向*号时,i-- count++)j指向*交换代码部分替换为array[j] = array[i 阅读全文
摘要:
partition[英][pɑ:ˈtiʃən][美][pɑrˈtɪʃən]简明释义n.划分,分开;分割;隔离物;隔墙vt.分开,隔开;区分;分割 阅读全文
摘要:
freopenfreopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);FILE*fin,*fout; 文件指针fin=fopen(“data.in”,“rb”);fout=fopen(“data.out”,“wb”);对于文件使用方式有以下几点说明:1)文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:r(read): 读w(write): 写+: 读和写a(append): 追加t(text): 文本文件,可省略不写b 阅读全文
摘要:
编写一个函数,已知一个字符串,比如asderwsde,寻找其中的一个子字符串比如sde的个数,如果没有返回0,有的话返回子字符串的个数。函数的原型为int num_of_substring(const char* string,const char *substring);利用strncmp函数名: strncmp 功 能: 串比较 用 法: int strncmp(char *str1, char *str2, int maxlen); 说明:此函数功能即比较字符串str1和str2的前maxlen个字符。如果前maxlen字节完全相等,返回值就=0;在前maxlen字节比较过程中,如果出现 阅读全文
摘要:
sub-在...以下,少于,低于,亚于,次于sub-zero temperatures 零度以下气温sub-standard 低于标准的对了,我们不是学过subway(地下铁路) submarine(潜艇) 吗? 阅读全文
摘要:
strncmp函数名: strncmp功 能: 串比较用 法: int strncmp(char *str1, char *str2, int maxlen);说明:此函数功能即比较字符串str1和str2的前maxlen个字符。如果前maxlen字节完全相等,返回值就=0;在前maxlen字节比较过程中,如果出现str1[n]与str2[n]不等,则返回(str1[n]-str2[n])。 阅读全文
摘要:
用C语言实现函数void*memmove(void*dest,constvoid*src,size_tn)。memmove函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。强制类型转换或的优先级高于 + 符。来源http://blog.csdn.net/91program/article/details/73639441.考虑到内存可能重叠的情况(1)当源内存的首地址等于目标内存的首地址时,不进行任何拷贝(2)当源内存的首地址大于目标内存的首地址时,实行正向拷贝(3)当源内存的首地址小于目标内存的首地址时,实行反向拷贝2.由于可以把任何类型的指针赋给void类型的指针这个函 阅读全文
摘要:
一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0];3)从j开始向前搜索,即由后开始向前搜索(j -- ),找到第一个小于key的值A[j],A[i]与A[j]交换;4)从i开始向后搜索,即由前开始向后搜索(i ++ ),找到第一个大于key的A[i],A[i]与A[j]交换;5)重复第3、4、5步,直到 I=J; (3,4步是在程序中没找到时候j=j-1,i=i+1,直至找到为止。找到并交换的时候i, j指针位置不变。另外当i=j这过程一定正好是i+或j-完成的最后令循环结束。)待排序的数组A 阅读全文
摘要:
1学想法 4学做法方法1:类似于消除原理,既然某个数字大于长度的一半,那么我们就遍历数组,如果两个数不相等则消除,最后剩下的数就是我们要的。当然如果不存在这样的数,这是不行的。所以最后要再遍历一遍验证这个数的出现次数是否大于数组的一半。具体实现:我们在考虑删除两个不同的数字的时候,实际上可以同过计数来实现,而不是物理上真正的删除。 在遍历数组的时候保存两个值:一个是数组中的一个数字,一个是次数。当我们遍历到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,则次数加1。如果下一个数字和我们之前保存的数字不同,则次数减1。如果次数为零,我们需要保存下一个数字,并把次数设为1。由于我们要找的 阅读全文
摘要:
1.递归的作用在于把问题的规模不断缩少,直到问题缩少到能简单地解决2.新问题与原问题有着相同的形式3.递归的结束需要简单情景解法:我们只需要以去掉两端的字符的形式一层层检查,每一次的检查都去掉了两个字符,这样就达到了缩少问题规模的目的。#include #include #include #include void fun(char *array, int arraySize, int index){ //printf("index:%d\n",index); //printf("size:%d\n",arraySize); //printf(" 阅读全文
摘要:
#include #include #include #include int main(){ return 0;}#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int main(){return 0;} 阅读全文