算法每日一题之Day-1
2020-10-08 本文已影响0人
我是卖报的小行家
1.数组逆序排列(反转字符串)
核心思想:
对于长度为 N 的待被反转的字符数组,我们可以观察反转前后下标的变化,假设反转前字符数组为 s[0] s[1] s[2] ... s[N - 1],那么反转后字符数组为 s[N - 1] s[N - 2] ... s[0]。比较反转前后下标变化很容易得出 s[i] 的字符与 s[N - 1 - i] 的字符发生了交换的规律,因此我们可以得出如下双指针的解法:
将 left 指向字符数组首元素,right 指向字符数组尾元素。
当 left < right:
交换 s[left] 和 s[right];
left 指针右移一位,即 left = left + 1;
right 指针左移一位,即 right = right - 1。
当 left >= right,反转结束,返回字符数组即可。
上代码
-(NSArray *)getIntervelArrayWithArray1:(NSMutableArray *)array{
NSInteger n = array.count;
for (NSInteger left = 0,right = n-1; left < right; ++left, --right) {
NSString * temp = array[left];
array[left] = array[right];
array[right] = temp;
}
return [array mutableCopy];
}
备注:转载于此篇华文:https://leetcode-cn.com/problems/reverse-string/solution/fan-zhuan-zi-fu-chuan-by-leetcode-solution/