算法 Tricks(一)—— 字符串和数组的翻转
来源:互联网 发布:装linux系统 双系统 编辑:程序博客网 时间:2024/06/09 18:38
所谓字符串和数组的翻转,其实是对应位的交换,考察的是下标之间的关系,要交换的下标的关系为:
也即下标之和为数组的长度减1,而与数组的长度为奇数还是偶数无关。
void ReverseArray(int *A, int n){ for (int i = 0; i < n/2; ++i){ swap(A[i], A[n-1-i]); }}
当然更一般化的接口设计为:
void ReverseArray(int *A, int lo, int hi){ // ReverseArray(int *A, int n) ⇒ ReverseArray(A, 0, n) // [lo, hi) for (int i = 0; i < (lo + hi)/2; ++i){ swap(A[lo + i], A[hi - i - 1]); } // lo + i + (hi - i - 1) == lo + hi - 1}
当然也可以不借助 swap 函数的写法为:
void ReverseArray(int *A, int lo, int hi){ while (lo < hi){ int t = A[lo]; A[lo++] = A[--hi]; A[hi] = t; }}
0 0
- 算法 Tricks(一)—— 字符串和数组的翻转
- C Tricks(三)—— 以一维数组的形式对二维数组赋值
- 字符串和数组翻转
- numpy tricks(一)—— 多维数组的阈值化处理
- C++ Tricks(一)—— 判断字符串 string 对象的所有字符都相等
- C Tricks(一)—— 一维数组变二维数组
- 【算法】—— 算法实现的 tricks
- Tricks(三十二)—— 二维数组转换为一维数组
- 数据结构 Tricks(一)—— 父节点和左右孩子索引号之间的关系
- 算法 Tricks(二) —— 大数的处理
- 算法 Tricks(六)— if 条件分支的简化
- 算法 Tricks(三)—— 数组(序列)任意区间最小(大)值
- 赛码网基础算法——翻转数组(快排的思想)
- 数组全排列算法(一)字符串数组全排列——逐个追加组合算法
- 算法入门经典(一)数组和字符串
- C Tricks(十七)—— 对角线元素的屏蔽、二维数组(矩阵)的遍历
- Tricks(十七) —— 数组与字典(map)
- Python Tricks(十五)—— repeat(字符串重复)
- spring+myBatis 配置多数据源,切换数据源
- PyQt基本操作
- union-find 应用
- 利用两个栈实现队列---入队和出队
- Fragment嵌套时报IllegalArgumentException的解决办法
- 算法 Tricks(一)—— 字符串和数组的翻转
- Tomcat学习—Tomcat7 修改/webapps/ROOT发布路径(Linux和windows环境)
- 十二. Linux系统的环境变量的功能
- 系统命令操作
- ccah-500 第5题 How will the Fair Scheduler handle these two jobs?
- 提高zxing生成二维码的容错率及zxing生成二维码的边框设置
- 优先队列详解
- Java学习之自定义异常和抛出异常
- Windows 7 频繁提示:计算机的内存不足