mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-06-25 02:27:10 +08:00
fix typo
This commit is contained in:
parent
0c61be453d
commit
4a255c9aa3
@ -14,38 +14,36 @@ n<=39
|
|||||||
**采用迭代法:**
|
**采用迭代法:**
|
||||||
|
|
||||||
```java
|
```java
|
||||||
int Fibonacci(int number) {
|
int Fibonacci(int number) {
|
||||||
if (number <= 0) {
|
if (number <= 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (number == 1 || number == 2) {
|
if (number == 1 || number == 2) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
int first = 1, second = 1, third = 0;
|
int first = 1, second = 1, third = 0;
|
||||||
for (int i = 3; i <= number; i++) {
|
for (int i = 3; i <= number; i++) {
|
||||||
third = first + second;
|
third = first + second;
|
||||||
first = second;
|
first = second;
|
||||||
second = third;
|
second = third;
|
||||||
}
|
}
|
||||||
return third;
|
return third;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
**采用递归:**
|
**采用递归:**
|
||||||
|
|
||||||
```java
|
```java
|
||||||
public int Fibonacci(int n) {
|
public int Fibonacci(int n) {
|
||||||
|
if (n <= 0) {
|
||||||
if (n <= 0) {
|
return 0;
|
||||||
return 0;
|
}
|
||||||
}
|
if (n == 1||n==2) {
|
||||||
if (n == 1||n==2) {
|
return 1;
|
||||||
return 1;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return Fibonacci(n - 2) + Fibonacci(n - 1);
|
return Fibonacci(n - 2) + Fibonacci(n - 1);
|
||||||
|
}
|
||||||
}
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 二 跳台阶问题
|
### 二 跳台阶问题
|
||||||
@ -71,24 +69,24 @@ f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5, 可以总结出f(n) = f(n-1) + f(n-2)
|
|||||||
#### **示例代码:**
|
#### **示例代码:**
|
||||||
|
|
||||||
```java
|
```java
|
||||||
int jumpFloor(int number) {
|
int jumpFloor(int number) {
|
||||||
if (number <= 0) {
|
if (number <= 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (number == 1) {
|
if (number == 1) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (number == 2) {
|
if (number == 2) {
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
int first = 1, second = 2, third = 0;
|
int first = 1, second = 2, third = 0;
|
||||||
for (int i = 3; i <= number; i++) {
|
for (int i = 3; i <= number; i++) {
|
||||||
third = first + second;
|
third = first + second;
|
||||||
first = second;
|
first = second;
|
||||||
second = third;
|
second = third;
|
||||||
}
|
}
|
||||||
return third;
|
return third;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 三 变态跳台阶问题
|
### 三 变态跳台阶问题
|
||||||
@ -113,9 +111,9 @@ f(n)=f(n-1)+f(n-2)+...+f(1)
|
|||||||
#### **示例代码:**
|
#### **示例代码:**
|
||||||
|
|
||||||
```java
|
```java
|
||||||
int JumpFloorII(int number) {
|
int JumpFloorII(int number) {
|
||||||
return 1 << --number;//2^(number-1)用位移操作进行,更快
|
return 1 << --number;//2^(number-1)用位移操作进行,更快
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
#### **补充:**
|
#### **补充:**
|
||||||
@ -124,7 +122,7 @@ f(n)=f(n-1)+f(n-2)+...+f(1)
|
|||||||
|
|
||||||
1. “<<” : **左移运算符**,等同于乘2的n次方
|
1. “<<” : **左移运算符**,等同于乘2的n次方
|
||||||
2. “>>”: **右移运算符**,等同于除2的n次方
|
2. “>>”: **右移运算符**,等同于除2的n次方
|
||||||
3. “>>>” **无符号右移运算符**,不管移动前最高位是0还是1,右移后左侧产生的空位部分都以0来填充。与>>类似。
|
3. “>>>” : **无符号右移运算符**,不管移动前最高位是0还是1,右移后左侧产生的空位部分都以0来填充。与>>类似。
|
||||||
例:
|
例:
|
||||||
int a = 16;
|
int a = 16;
|
||||||
int b = a << 2;//左移2,等同于16 * 2的2次方,也就是16 * 4
|
int b = a << 2;//左移2,等同于16 * 2的2次方,也就是16 * 4
|
||||||
@ -147,22 +145,22 @@ f(n)=f(n-1)+f(n-2)+...+f(1)
|
|||||||
#### **示例代码:**
|
#### **示例代码:**
|
||||||
|
|
||||||
```java
|
```java
|
||||||
public boolean Find(int target, int [][] array) {
|
public boolean Find(int target, int [][] array) {
|
||||||
//基本思路从左下角开始找,这样速度最快
|
//基本思路从左下角开始找,这样速度最快
|
||||||
int row = array.length-1;//行
|
int row = array.length-1;//行
|
||||||
int column = 0;//列
|
int column = 0;//列
|
||||||
//当行数大于0,当前列数小于总列数时循环条件成立
|
//当行数大于0,当前列数小于总列数时循环条件成立
|
||||||
while((row >= 0)&& (column< array[0].length)){
|
while((row >= 0)&& (column< array[0].length)){
|
||||||
if(array[row][column] > target){
|
if(array[row][column] > target){
|
||||||
row--;
|
row--;
|
||||||
}else if(array[row][column] < target){
|
}else if(array[row][column] < target){
|
||||||
column++;
|
column++;
|
||||||
}else{
|
}else{
|
||||||
return true;
|
return true;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 五 替换空格
|
### 五 替换空格
|
||||||
@ -175,38 +173,37 @@ f(n)=f(n-1)+f(n-2)+...+f(1)
|
|||||||
|
|
||||||
这道题不难,我们可以通过循环判断字符串的字符是否为空格,是的话就利用append()方法添加追加“%20”,否则还是追加原字符。
|
这道题不难,我们可以通过循环判断字符串的字符是否为空格,是的话就利用append()方法添加追加“%20”,否则还是追加原字符。
|
||||||
|
|
||||||
或者最简单的方法就是利用: replaceAll(String regex,String replacement)方法了,一行代码就可以解决。
|
或者最简单的方法就是利用:replaceAll(String regex,String replacement)方法了,一行代码就可以解决。
|
||||||
|
|
||||||
#### **示例代码:**
|
#### **示例代码:**
|
||||||
|
|
||||||
**常规做法:**
|
**常规做法:**
|
||||||
|
|
||||||
```java
|
```java
|
||||||
public String replaceSpace(StringBuffer str) {
|
public String replaceSpace(StringBuffer str) {
|
||||||
StringBuffer out=new StringBuffer();
|
StringBuffer out = new StringBuffer();
|
||||||
for (int i = 0; i < str.toString().length(); i++) {
|
for (int i = 0; i < str.toString().length(); i++) {
|
||||||
char b=str.charAt(i);
|
char b = str.charAt(i);
|
||||||
if(String.valueOf(b).equals(" ")){
|
if(String.valueOf(b).equals(" ")){
|
||||||
out.append("%20");
|
out.append("%20");
|
||||||
}else{
|
}else{
|
||||||
out.append(b);
|
out.append(b);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return out.toString();
|
|
||||||
}
|
}
|
||||||
|
return out.toString();
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
**一行代码解决:**
|
**一行代码解决:**
|
||||||
|
|
||||||
```java
|
```java
|
||||||
public String replaceSpace(StringBuffer str) {
|
public String replaceSpace(StringBuffer str) {
|
||||||
//return str.toString().replaceAll(" ", "%20");
|
//return str.toString().replaceAll(" ", "%20");
|
||||||
//public String replaceAll(String regex,String replacement)
|
//public String replaceAll(String regex,String replacement)
|
||||||
//用给定的替换替换与给定的regular expression匹配的此字符串的每个子字符串。
|
//用给定的替换替换与给定的regular expression匹配的此字符串的每个子字符串。
|
||||||
//\ 转义字符. 如果你要使用 "\" 本身, 则应该使用 "\\". String类型中的空格用“\s”表示,所以我这里猜测"\\s"就是代表空格的意思
|
//\ 转义字符. 如果你要使用 "\" 本身, 则应该使用 "\\". String类型中的空格用“\s”表示,所以我这里猜测"\\s"就是代表空格的意思
|
||||||
return str.toString().replaceAll("\\s", "%20");
|
return str.toString().replaceAll("\\s", "%20");
|
||||||
}
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 六 数值的整数次方
|
### 六 数值的整数次方
|
||||||
@ -279,17 +276,17 @@ public class Solution {
|
|||||||
当然这一题也可以采用笨方法:累乘。不过这种方法的时间复杂度为O(n),这样没有前一种方法效率高。
|
当然这一题也可以采用笨方法:累乘。不过这种方法的时间复杂度为O(n),这样没有前一种方法效率高。
|
||||||
|
|
||||||
```java
|
```java
|
||||||
// 使用累乘
|
// 使用累乘
|
||||||
public double powerAnother(double base, int exponent) {
|
public double powerAnother(double base, int exponent) {
|
||||||
double result = 1.0;
|
double result = 1.0;
|
||||||
for (int i = 0; i < Math.abs(exponent); i++) {
|
for (int i = 0; i < Math.abs(exponent); i++) {
|
||||||
result *= base;
|
result *= base;
|
||||||
}
|
|
||||||
if (exponent >= 0)
|
|
||||||
return result;
|
|
||||||
else
|
|
||||||
return 1 / result;
|
|
||||||
}
|
}
|
||||||
|
if (exponent >= 0)
|
||||||
|
return result;
|
||||||
|
else
|
||||||
|
return 1 / result;
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 七 调整数组顺序使奇数位于偶数前面
|
### 七 调整数组顺序使奇数位于偶数前面
|
||||||
@ -434,22 +431,21 @@ public class ListNode {
|
|||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
public class Solution {
|
public class Solution {
|
||||||
public ListNode ReverseList(ListNode head) {
|
public ListNode ReverseList(ListNode head) {
|
||||||
ListNode next = null;
|
ListNode next = null;
|
||||||
ListNode pre = null;
|
ListNode pre = null;
|
||||||
while (head != null) {
|
while (head != null) {
|
||||||
//保存要反转到头来的那个节点
|
//保存要反转到头来的那个节点
|
||||||
next = head.next;
|
next = head.next;
|
||||||
//要反转的那个节点指向已经反转的上一个节点
|
//要反转的那个节点指向已经反转的上一个节点
|
||||||
head.next = pre;
|
head.next = pre;
|
||||||
//上一个已经反转到头部的节点
|
//上一个已经反转到头部的节点
|
||||||
pre = head;
|
pre = head;
|
||||||
//一直向链表尾走
|
//一直向链表尾走
|
||||||
head = next;
|
head = next;
|
||||||
|
}
|
||||||
|
return pre;
|
||||||
}
|
}
|
||||||
return pre;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -538,20 +534,20 @@ public class Solution {
|
|||||||
|
|
||||||
```java
|
```java
|
||||||
public ListNode Merge(ListNode list1,ListNode list2) {
|
public ListNode Merge(ListNode list1,ListNode list2) {
|
||||||
if(list1 == null){
|
if(list1 == null){
|
||||||
return list2;
|
return list2;
|
||||||
}
|
}
|
||||||
if(list2 == null){
|
if(list2 == null){
|
||||||
return list1;
|
return list1;
|
||||||
}
|
}
|
||||||
if(list1.val <= list2.val){
|
if(list1.val <= list2.val){
|
||||||
list1.next = Merge(list1.next, list2);
|
list1.next = Merge(list1.next, list2);
|
||||||
return list1;
|
return list1;
|
||||||
}else{
|
}else{
|
||||||
list2.next = Merge(list1, list2.next);
|
list2.next = Merge(list1, list2.next);
|
||||||
return list2;
|
return list2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 十一 用两个栈实现队列
|
### 十一 用两个栈实现队列
|
||||||
@ -642,8 +638,6 @@ https://www.nowcoder.com/questionTerminal/d77d11405cc7470d82554cb392585106
|
|||||||
….
|
….
|
||||||
依次执行,最后辅助栈为空。如果不为空说明弹出序列不是该栈的弹出顺序。
|
依次执行,最后辅助栈为空。如果不为空说明弹出序列不是该栈的弹出顺序。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#### **考察内容:**
|
#### **考察内容:**
|
||||||
|
|
||||||
栈
|
栈
|
||||||
|
Loading…
x
Reference in New Issue
Block a user