算法编程题
来源:互联网 发布:淘宝装修助手 编辑:程序博客网 时间:2024/05/28 22:13
1.行列递增矩阵的查找
在一个二维数组中,每一行每一列都是按照从左到右的递增顺序。现输入一个二维数组和一个整数,判断这个数是否在这个数组中。
分析:这种行和列的矩阵分别递增,叫杨氏矩阵。
解法一:分治法
因为行和列都是递增,所以对角线上也是递增的,了在对角线上进行二分查找,若要找的数介于对角线上下两个数之间,则可排除左上和右下两个矩阵,而在左下和右上查找。
解法二:定位法
首先直接定位到矩阵最右上角的元素,如果这个元素比要找的数大,则往左走,比要找的数小,则往下走,直到找到这个数。复杂度为O(m+n)
#define ROW 4#define COL 4bool YoungMatrix(int array[][CLO],int searchKey){int i=0;j=CLO-1;//j定位矩阵最右上角的元素int var=array[i][j]while(true){if(var==searchKey){return true;}else if(var<searchKey&&i<ROW-1){var=array[++i][j];//向下走}else if(var>searchKey&&j>0){var=array[i][--j]}return true;}}}
巧妙的运用定位法,每次都寻找最右上方的数,直到找到特定元素。
链表反转–基本题
1.用三个指针逐个连接点进行反转
Node * ReverseList(Node *head)//返回的还是一个链表{Node *p1,*p2,*p3;if(head==null||*head==null)//先排除异常输入 return head;p1=head;p2=p1->next;while(p2)//指针遍历,逐个反转{ p3=p2->next; p2->next=p1; p1=p2; p2=p3;}}
2.将单链表储存为数组,然后按照数组的索引逆序进行反转
3.将单链表放入栈中,利用栈的先进后出
0 0
- 编程艺术算法题
- 算法编程题
- 算法编程题#iOS
- 算法编程题
- 编程算法题总结
- 经典算法编程题01
- 算法编程题的心得体会
- Android之算法编程题
- 算法编程题:回文序列
- 【牛客网】算法编程题汇总
- 【算法题】编程测试:射击场
- 算法编程
- 编程算法
- 编程算法
- 【算法题】触宝2018编程题二
- baidu的题,分析,算法,编程(转)
- 一道ACM剑气算法的编程题
- 做算法编程题的一般步骤
- Java内存管理第三篇 - 内存可能产生的问题
- Android应用如何反馈Crash报告
- Android中GridView解析
- Android Studio 将github作为远程maven仓库
- Mahout学习之聚类算法Kmeans
- 算法编程题
- 字符串的数组表示法&指针表示法&常量表示法
- java平台读写dxf文件
- 贝塞尔曲线
- UIView笔记
- 九度OJ 1114:神奇的口袋 (DFS、DP)
- 在Android程序中使用已有的SQLite数据库
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
- TFS 无法找到新加的Windows用户