Skip to content

Commit 8f105fb

Browse files
committed
add recursion
1 parent 0d024ca commit 8f105fb

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

算法思维/递归思维.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
### 递归
2+
3+
#### 介绍
4+
5+
将大问题转化为小问题,通过递归依次解决各个小问题。
6+
7+
#### 示例
8+
9+
##### 334.反转字符串 [reverse-string](https://leetcode-cn.com/problems/reverse-string/)
10+
11+
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 `char[]` 的形式给出。不要给另外的数组分配额外的空间,你必须[原地](https://baike.baidu.com/item/原地算法)修改输入数组、使用 O(1) 的额外空间解决这一问题。
12+
13+
> 输入:["h","e","l","l","o"]
14+
> 输出:["o","l","l","e","h"]
15+
16+
思路:递归、交换都可以
17+
18+
```js
19+
var reverseString = function(s) {
20+
reverse(s,0,s.length-1);
21+
return s;
22+
};
23+
24+
var reverse = function(s, left, right){ //递归写法
25+
if(left >= right){
26+
return;
27+
}
28+
[s[left], s[right]] = [s[right],s[left]];
29+
reverse(s,left+1,right-1);
30+
}
31+
```
32+
33+
```js
34+
var reverseString = function (s) {
35+
let len = s.length;
36+
for (let i = 0; i < len >> 1; i++) {
37+
[s[i], s[len - 1 - i]] = [s[len - 1 - i], s[i]];
38+
}
39+
};
40+
```
41+
42+
##### 24.两两交换链表中的节点 [swap-nodes-in-pairs](https://leetcode-cn.com/problems/swap-nodes-in-pairs/)
43+
44+
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
45+
46+
> 输入:head = [1,2,3,4]
47+
> 输出:[2,1,4,3]
48+
49+
```js
50+
51+
```
52+

0 commit comments

Comments
 (0)