@@ -14,38 +14,36 @@ n<=39
1414** 采用迭代法:**
1515
1616``` 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+ }
3232```
3333
3434** 采用递归:**
3535
3636``` 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+ }
4947```
5048
5149### 二 跳台阶问题
@@ -71,24 +69,24 @@ f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5, 可以总结出f(n) = f(n-1) + f(n-2)
7169#### ** 示例代码:**
7270
7371``` 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+ }
9290```
9391
9492### 三 变态跳台阶问题
@@ -113,9 +111,9 @@ f(n)=f(n-1)+f(n-2)+...+f(1)
113111#### ** 示例代码:**
114112
115113``` 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+ }
119117```
120118
121119#### ** 补充:**
@@ -124,7 +122,7 @@ f(n)=f(n-1)+f(n-2)+...+f(1)
124122
1251231 . “<<” : ** 左移运算符** ,等同于乘2的n次方
1261242 . “>>”: ** 右移运算符** ,等同于除2的n次方
127- 3 . “>>>” ** 无符号右移运算符** ,不管移动前最高位是0还是1,右移后左侧产生的空位部分都以0来填充。与>>类似。
125+ 3 . “>>>” : ** 无符号右移运算符** ,不管移动前最高位是0还是1,右移后左侧产生的空位部分都以0来填充。与>>类似。
128126 例:
129127 int a = 16;
130128 int b = a << 2;//左移2,等同于16 * 2的2次方,也就是16 * 4
@@ -147,22 +145,22 @@ f(n)=f(n-1)+f(n-2)+...+f(1)
147145#### ** 示例代码:**
148146
149147``` 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 ;
163160 }
164- return false ;
165161 }
162+ return false ;
163+ }
166164```
167165
168166### 五 替换空格
@@ -175,38 +173,37 @@ f(n)=f(n-1)+f(n-2)+...+f(1)
175173
176174这道题不难,我们可以通过循环判断字符串的字符是否为空格,是的话就利用append()方法添加追加“%20”,否则还是追加原字符。
177175
178- 或者最简单的方法就是利用: replaceAll(String regex,String replacement)方法了,一行代码就可以解决。
176+ 或者最简单的方法就是利用:replaceAll(String regex,String replacement)方法了,一行代码就可以解决。
179177
180178#### ** 示例代码:**
181179
182180** 常规做法:**
183181
184182``` 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);
194191 }
195- return out. toString();
196192 }
193+ return out. toString();
194+ }
197195```
198196
199197** 一行代码解决:**
200198
201199``` 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+ }
210207```
211208
212209### 六 数值的整数次方
@@ -279,17 +276,17 @@ public class Solution {
279276当然这一题也可以采用笨方法:累乘。不过这种方法的时间复杂度为O(n),这样没有前一种方法效率高。
280277
281278``` 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;
292284 }
285+ if (exponent >= 0 )
286+ return result;
287+ else
288+ return 1 / result;
289+ }
293290```
294291
295292### 七 调整数组顺序使奇数位于偶数前面
@@ -434,22 +431,21 @@ public class ListNode {
434431 }
435432}*/
436433public 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;
449448 }
450- return pre;
451- }
452-
453449}
454450```
455451
@@ -538,20 +534,20 @@ public class Solution {
538534
539535``` java
540536public 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+ }
555551```
556552
557553### 十一 用两个栈实现队列
@@ -642,8 +638,6 @@ https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106
642638….
643639依次执行,最后辅助栈为空。如果不为空说明弹出序列不是该栈的弹出顺序。
644640
645-
646-
647641#### ** 考察内容:**
648642
649643栈
0 commit comments