关于双指针
2016-04-10 13:37
155 查看
在百度上百度双指针,大部分都说的是二级指针,对于这个题目,所使用的双指针,并非二级指针。
而是两个指向数组首尾的指向。
如图:
首先对数组进行排序,将头指针与尾指针指向的数进行相加,如果小于目标数,头指针向后移动一次,如果大于目标数,尾指针向前移动一个位置;
直到等于目标数结束。然后将两个位置的数与原数组进行检索,找到下标。
代码如下;
双指针的运用:(回文串的判定,遇见非字母或数字就跳过)
bool isPalindrome(char* s) {//双指针做法,,,
int flag = 1;
char *p, *q;
p = s;
q = &s[strlen(s) - 1];
while(q > p){
if(*p >='a' && *p <= 'z' || *p >= 'A' && *p <= 'Z' || *p>='0' && *p <= '9'){
if(*q >='a' && *q <= 'z' || *q >= 'A' && *q <= 'Z' || *q >= '0' && *q <= '9'){
if(*p >= 'A' && *p <= 'Z'){
*p = *p - 'A' + 'a';
}
if(*q >= 'A' && *q <= 'Z'){
*q = *q - 'A' + 'a';
}
if(*p == *q){
p++;
q--;
}
else{
flag = 0;
break;
}
}
else{
q--;
}
}
else{
p++;
}
}
if(flag) return true;
else return false;
}
关于双个指针的运用,从数组两头进行遍历,使得程序的运行耗时的到减少,在顺序表的操作中经常能看到它的身影,栈的栈顶与栈底指向等等。
相关文章推荐
- 第6周项目2-带武器的游戏角色
- comparable 和 comparator
- ZOJ3623:Battle Ships(全然背包)
- 20159217《网络攻防实践》第六周学习总结
- 使用history命令查看作业的整体执行情况
- 寻找直方图中最大矩形
- Java - JSON
- 邁向IT專家成功之路的三十則鐵律 鐵律七:IT人效率之道-時間管理
- 有干货--魅族技术沙龙第三期广州站参会总结
- 两个比较接口Comparable与Comparator
- 【小镇的技术天梯】lanmp服务器集群搭建(4)mysql-cluster集群搭建
- PL/SQL Developer 中文乱码问题的解决
- 《转》handler机制的原理
- gcc -I -L -l区别
- Object-C 介绍
- 自己定义AlertDialog对话框布局
- 图片识别
- JDBC处理事务
- windows多线程没那么难
- 桌面快捷方式图标显示异常