@@ -2743,7 +2740,7 @@ public int LastRemaining_Solution(int n, int m) {
...
@@ -2743,7 +2740,7 @@ public int LastRemaining_Solution(int n, int m) {
## 解题思路
## 解题思路
使用贪心策略,假设第 i 轮进行卖出操作,买入操作价格应该是 i 之前并且价格最低。
使用贪心策略,假设第 i 轮进行卖出操作,买入操作价格应该在 i 之前并且价格最低。
```java
```java
publicintmaxProfit(int[]prices){
publicintmaxProfit(int[]prices){
...
@@ -2799,7 +2796,7 @@ a ^ b 表示没有考虑进位的情况下两数的和,(a & b) << 1 就是进
...
@@ -2799,7 +2796,7 @@ a ^ b 表示没有考虑进位的情况下两数的和,(a & b) << 1 就是进
递归会终止的原因是 (a & b) << 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。
递归会终止的原因是 (a & b) << 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。
```java
```java
publicintAdd(intnum1,intnum2){
publicintAdd(intnum1,intnum2){
returnnum2==0?num1:Add(num1^num2,(num1&num2)<<1);
returnnum2==0?num1:Add(num1^num2,(num1&num2)<<1);
}
}
```
```
...
@@ -2848,17 +2845,17 @@ Output:
...
@@ -2848,17 +2845,17 @@ Output:
```java
```java
publicintStrToInt(Stringstr){
publicintStrToInt(Stringstr){
if(str.length()==0)
if(str==null||str.length()==0)
return0;
return0;
char[]chars=str.toCharArray();
booleanisNegative=str.charAt(0)=='-';
booleanisNegative=chars[0]=='-';
intret=0;
intret=0;
for(inti=0;i<chars.length;i++){
for(inti=0;i<str.length();i++){
if(i==0&&(chars[i]=='+'||chars[i]=='-'))
charc=str.charAt(i);
if(i==0&&(c=='+'||c=='-'))
continue;
continue;
if(chars[i]<'0'||chars[i]>'9')
if(c<'0'||c>'9')
return0;// 非法输入
return0;// 非法输入
ret=ret*10+(chars[i]-'0');
ret=ret*10+(c-'0');
}
}
returnisNegative?-ret:ret;
returnisNegative?-ret:ret;
}
}
...
@@ -2874,7 +2871,7 @@ public int StrToInt(String str) {
...
@@ -2874,7 +2871,7 @@ public int StrToInt(String str) {
[Leetcode : 235. Lowest Common Ancestor of a Binary Search Tree](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/description/)
[Leetcode : 235. Lowest Common Ancestor of a Binary Search Tree](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/description/)