@@ -14,38 +14,36 @@ n<=39
14
14
** 采用迭代法:**
15
15
16
16
``` java
17
- int Fibonacci(int number) {
18
- if (number <= 0 ) {
19
- return 0 ;
20
- }
21
- if (number == 1 || number == 2 ) {
22
- return 1 ;
23
- }
24
- int first = 1 , second = 1 , third = 0 ;
25
- for (int i = 3 ; i <= number; i++ ) {
26
- third = first + second;
27
- first = second;
28
- second = third;
29
- }
30
- return third;
31
- }
17
+ int Fibonacci(int number) {
18
+ if (number <= 0 ) {
19
+ return 0 ;
20
+ }
21
+ if (number == 1 || number == 2 ) {
22
+ return 1 ;
23
+ }
24
+ int first = 1 , second = 1 , third = 0 ;
25
+ for (int i = 3 ; i <= number; i++ ) {
26
+ third = first + second;
27
+ first = second;
28
+ second = third;
29
+ }
30
+ return third;
31
+ }
32
32
```
33
33
34
34
** 采用递归:**
35
35
36
36
``` java
37
- public int Fibonacci(int n) {
38
-
39
- if (n <= 0 ) {
40
- return 0 ;
41
- }
42
- if (n == 1 || n== 2 ) {
43
- return 1 ;
44
- }
45
-
46
- return Fibonacci(n - 2 ) + Fibonacci(n - 1 );
47
-
48
- }
37
+ public int Fibonacci(int n) {
38
+ if (n <= 0 ) {
39
+ return 0 ;
40
+ }
41
+ if (n == 1 || n== 2 ) {
42
+ return 1 ;
43
+ }
44
+
45
+ return Fibonacci(n - 2 ) + Fibonacci(n - 1 );
46
+ }
49
47
```
50
48
51
49
### 二 跳台阶问题
@@ -71,24 +69,24 @@ f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5, 可以总结出f(n) = f(n-1) + f(n-2)
71
69
#### ** 示例代码:**
72
70
73
71
``` java
74
- int jumpFloor(int number) {
75
- if (number <= 0 ) {
76
- return 0 ;
77
- }
78
- if (number == 1 ) {
79
- return 1 ;
80
- }
81
- if (number == 2 ) {
82
- return 2 ;
83
- }
84
- int first = 1 , second = 2 , third = 0 ;
85
- for (int i = 3 ; i <= number; i++ ) {
86
- third = first + second;
87
- first = second;
88
- second = third;
89
- }
90
- return third;
91
- }
72
+ int jumpFloor(int number) {
73
+ if (number <= 0 ) {
74
+ return 0 ;
75
+ }
76
+ if (number == 1 ) {
77
+ return 1 ;
78
+ }
79
+ if (number == 2 ) {
80
+ return 2 ;
81
+ }
82
+ int first = 1 , second = 2 , third = 0 ;
83
+ for (int i = 3 ; i <= number; i++ ) {
84
+ third = first + second;
85
+ first = second;
86
+ second = third;
87
+ }
88
+ return third;
89
+ }
92
90
```
93
91
94
92
### 三 变态跳台阶问题
@@ -113,9 +111,9 @@ f(n)=f(n-1)+f(n-2)+...+f(1)
113
111
#### ** 示例代码:**
114
112
115
113
``` java
116
- int JumpFloorII(int number) {
117
- return 1 << -- number;// 2^(number-1)用位移操作进行,更快
118
- }
114
+ int JumpFloorII(int number) {
115
+ return 1 << -- number;// 2^(number-1)用位移操作进行,更快
116
+ }
119
117
```
120
118
121
119
#### ** 补充:**
@@ -124,7 +122,7 @@ f(n)=f(n-1)+f(n-2)+...+f(1)
124
122
125
123
1 . “<<” : ** 左移运算符** ,等同于乘2的n次方
126
124
2 . “>>”: ** 右移运算符** ,等同于除2的n次方
127
- 3 . “>>>” ** 无符号右移运算符** ,不管移动前最高位是0还是1,右移后左侧产生的空位部分都以0来填充。与>>类似。
125
+ 3 . “>>>” : ** 无符号右移运算符** ,不管移动前最高位是0还是1,右移后左侧产生的空位部分都以0来填充。与>>类似。
128
126
例:
129
127
int a = 16;
130
128
int b = a << 2;//左移2,等同于16 * 2的2次方,也就是16 * 4
@@ -147,22 +145,22 @@ f(n)=f(n-1)+f(n-2)+...+f(1)
147
145
#### ** 示例代码:**
148
146
149
147
``` java
150
- public boolean Find(int target, int [][] array) {
151
- // 基本思路从左下角开始找,这样速度最快
152
- int row = array. length- 1 ;// 行
153
- int column = 0 ;// 列
154
- // 当行数大于0,当前列数小于总列数时循环条件成立
155
- while ((row >= 0 )&& (column< array[0 ]. length)){
156
- if (array[row][column] > target){
157
- row-- ;
158
- }else if (array[row][column] < target){
159
- column++ ;
160
- }else {
161
- return true ;
162
- }
148
+ public boolean Find(int target, int [][] array) {
149
+ // 基本思路从左下角开始找,这样速度最快
150
+ int row = array. length- 1 ;// 行
151
+ int column = 0 ;// 列
152
+ // 当行数大于0,当前列数小于总列数时循环条件成立
153
+ while ((row >= 0 )&& (column< array[0 ]. length)){
154
+ if (array[row][column] > target){
155
+ row-- ;
156
+ }else if (array[row][column] < target){
157
+ column++ ;
158
+ }else {
159
+ return true ;
163
160
}
164
- return false ;
165
161
}
162
+ return false ;
163
+ }
166
164
```
167
165
168
166
### 五 替换空格
@@ -175,38 +173,37 @@ f(n)=f(n-1)+f(n-2)+...+f(1)
175
173
176
174
这道题不难,我们可以通过循环判断字符串的字符是否为空格,是的话就利用append()方法添加追加“%20”,否则还是追加原字符。
177
175
178
- 或者最简单的方法就是利用: replaceAll(String regex,String replacement)方法了,一行代码就可以解决。
176
+ 或者最简单的方法就是利用:replaceAll(String regex,String replacement)方法了,一行代码就可以解决。
179
177
180
178
#### ** 示例代码:**
181
179
182
180
** 常规做法:**
183
181
184
182
``` java
185
- public String replaceSpace(StringBuffer str) {
186
- StringBuffer out= new StringBuffer ();
187
- for (int i = 0 ; i < str. toString(). length(); i++ ) {
188
- char b= str. charAt(i);
189
- if (String . valueOf(b). equals(" " )){
190
- out. append(" %20" );
191
- }else {
192
- out. append(b);
193
- }
183
+ public String replaceSpace(StringBuffer str) {
184
+ StringBuffer out = new StringBuffer ();
185
+ for (int i = 0 ; i < str. toString(). length(); i++ ) {
186
+ char b = str. charAt(i);
187
+ if (String . valueOf(b). equals(" " )){
188
+ out. append(" %20" );
189
+ }else {
190
+ out. append(b);
194
191
}
195
- return out. toString();
196
192
}
193
+ return out. toString();
194
+ }
197
195
```
198
196
199
197
** 一行代码解决:**
200
198
201
199
``` java
202
- public String replaceSpace(StringBuffer str) {
203
- // return str.toString().replaceAll(" ", "%20");
204
- // public String replaceAll(String regex,String replacement)
205
- // 用给定的替换替换与给定的regular expression匹配的此字符串的每个子字符串。
206
- // \ 转义字符. 如果你要使用 "\" 本身, 则应该使用 "\\". String类型中的空格用“\s”表示,所以我这里猜测"\\s"就是代表空格的意思
207
- return str. toString(). replaceAll(" \\ s" , " %20" );
208
- }
209
-
200
+ public String replaceSpace(StringBuffer str) {
201
+ // return str.toString().replaceAll(" ", "%20");
202
+ // public String replaceAll(String regex,String replacement)
203
+ // 用给定的替换替换与给定的regular expression匹配的此字符串的每个子字符串。
204
+ // \ 转义字符. 如果你要使用 "\" 本身, 则应该使用 "\\". String类型中的空格用“\s”表示,所以我这里猜测"\\s"就是代表空格的意思
205
+ return str. toString(). replaceAll(" \\ s" , " %20" );
206
+ }
210
207
```
211
208
212
209
### 六 数值的整数次方
@@ -279,17 +276,17 @@ public class Solution {
279
276
当然这一题也可以采用笨方法:累乘。不过这种方法的时间复杂度为O(n),这样没有前一种方法效率高。
280
277
281
278
``` java
282
- // 使用累乘
283
- public double powerAnother(double base, int exponent) {
284
- double result = 1.0 ;
285
- for (int i = 0 ; i < Math . abs(exponent); i++ ) {
286
- result *= base;
287
- }
288
- if (exponent >= 0 )
289
- return result;
290
- else
291
- return 1 / result;
279
+ // 使用累乘
280
+ public double powerAnother(double base, int exponent) {
281
+ double result = 1.0 ;
282
+ for (int i = 0 ; i < Math . abs(exponent); i++ ) {
283
+ result *= base;
292
284
}
285
+ if (exponent >= 0 )
286
+ return result;
287
+ else
288
+ return 1 / result;
289
+ }
293
290
```
294
291
295
292
### 七 调整数组顺序使奇数位于偶数前面
@@ -434,22 +431,21 @@ public class ListNode {
434
431
}
435
432
}*/
436
433
public class Solution {
437
- public ListNode ReverseList (ListNode head ) {
438
- ListNode next = null ;
439
- ListNode pre = null ;
440
- while (head != null ) {
441
- // 保存要反转到头来的那个节点
442
- next = head. next;
443
- // 要反转的那个节点指向已经反转的上一个节点
444
- head. next = pre;
445
- // 上一个已经反转到头部的节点
446
- pre = head;
447
- // 一直向链表尾走
448
- head = next;
434
+ public ListNode ReverseList (ListNode head ) {
435
+ ListNode next = null ;
436
+ ListNode pre = null ;
437
+ while (head != null ) {
438
+ // 保存要反转到头来的那个节点
439
+ next = head. next;
440
+ // 要反转的那个节点指向已经反转的上一个节点
441
+ head. next = pre;
442
+ // 上一个已经反转到头部的节点
443
+ pre = head;
444
+ // 一直向链表尾走
445
+ head = next;
446
+ }
447
+ return pre;
449
448
}
450
- return pre;
451
- }
452
-
453
449
}
454
450
```
455
451
@@ -538,20 +534,20 @@ public class Solution {
538
534
539
535
``` java
540
536
public ListNode Merge(ListNode list1,ListNode list2) {
541
- if (list1 == null ){
542
- return list2;
543
- }
544
- if (list2 == null ){
545
- return list1;
546
- }
547
- if (list1. val <= list2. val){
548
- list1. next = Merge(list1. next, list2);
549
- return list1;
550
- }else {
551
- list2. next = Merge(list1, list2. next);
552
- return list2;
553
- }
554
- }
537
+ if (list1 == null ){
538
+ return list2;
539
+ }
540
+ if (list2 == null ){
541
+ return list1;
542
+ }
543
+ if (list1. val <= list2. val){
544
+ list1. next = Merge(list1. next, list2);
545
+ return list1;
546
+ }else {
547
+ list2. next = Merge(list1, list2. next);
548
+ return list2;
549
+ }
550
+ }
555
551
```
556
552
557
553
### 十一 用两个栈实现队列
@@ -642,8 +638,6 @@ https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106
642
638
….
643
639
依次执行,最后辅助栈为空。如果不为空说明弹出序列不是该栈的弹出顺序。
644
640
645
-
646
-
647
641
#### ** 考察内容:**
648
642
649
643
栈
0 commit comments