Merge pull request #1464 from wzqwtt/greedy02

添加(0053.最大子序和、0122.买卖股票的最佳时机II) Scala版本
This commit is contained in:
程序员Carl
2022-07-19 11:26:59 +08:00
committed by GitHub
3 changed files with 78 additions and 9 deletions

View File

@ -333,8 +333,41 @@ function maxSubArray(nums: number[]): number {
}; };
``` ```
### Scala
**贪心**
```scala
object Solution {
def maxSubArray(nums: Array[Int]): Int = {
var result = Int.MinValue
var count = 0
for (i <- nums.indices) {
count += nums(i) // count累加
if (count > result) result = count // 记录最大值
if (count <= 0) count = 0 // 一旦count为负则count归0
}
result
}
}
```
**动态规划**
```scala
object Solution {
def maxSubArray(nums: Array[Int]): Int = {
var dp = new Array[Int](nums.length)
var result = nums(0)
dp(0) = nums(0)
for (i <- 1 until nums.length) {
dp(i) = math.max(nums(i), dp(i - 1) + nums(i))
result = math.max(result, dp(i)) // 更新最大值
}
result
}
}
```
----------------------- -----------------------
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div> <div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

View File

@ -186,6 +186,24 @@ const maxSubArray = nums => {
}; };
``` ```
Scala:
```scala
object Solution {
def maxSubArray(nums: Array[Int]): Int = {
var dp = new Array[Int](nums.length)
var result = nums(0)
dp(0) = nums(0)
for (i <- 1 until nums.length) {
dp(i) = math.max(nums(i), dp(i - 1) + nums(i))
result = math.max(result, dp(i)) // 更新最大值
}
result
}
}
```
TypeScript TypeScript
```typescript ```typescript
@ -205,6 +223,5 @@ function maxSubArray(nums: number[]): number {
``` ```
----------------------- -----------------------
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div> <div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>

View File

@ -133,8 +133,9 @@ public:
## 其他语言版本 ## 其他语言版本
Java: ### Java:
贪心:
```java ```java
// 贪心思路 // 贪心思路
class Solution { class Solution {
@ -148,6 +149,7 @@ class Solution {
} }
``` ```
动态规划:
```java ```java
class Solution { // 动态规划 class Solution { // 动态规划
public int maxProfit(int[] prices) { public int maxProfit(int[] prices) {
@ -169,8 +171,8 @@ class Solution { // 动态规划
} }
``` ```
Python: ### Python:
贪心:
```python ```python
class Solution: class Solution:
def maxProfit(self, prices: List[int]) -> int: def maxProfit(self, prices: List[int]) -> int:
@ -180,7 +182,7 @@ class Solution:
return result return result
``` ```
python动态规划 动态规划:
```python ```python
class Solution: class Solution:
def maxProfit(self, prices: List[int]) -> int: def maxProfit(self, prices: List[int]) -> int:
@ -194,7 +196,7 @@ class Solution:
return dp[-1][1] return dp[-1][1]
``` ```
Go: ### Go:
```golang ```golang
//贪心算法 //贪心算法
@ -231,7 +233,7 @@ func maxProfit(prices []int) int {
} }
``` ```
Javascript: ### Javascript:
贪心 贪心
```Javascript ```Javascript
@ -268,7 +270,7 @@ const maxProfit = (prices) => {
}; };
``` ```
TypeScript ### TypeScript
```typescript ```typescript
function maxProfit(prices: number[]): number { function maxProfit(prices: number[]): number {
@ -280,7 +282,7 @@ function maxProfit(prices: number[]): number {
}; };
``` ```
C: ### C:
贪心: 贪心:
```c ```c
int maxProfit(int* prices, int pricesSize){ int maxProfit(int* prices, int pricesSize){
@ -318,5 +320,22 @@ int maxProfit(int* prices, int pricesSize){
} }
``` ```
### Scala
贪心:
```scala
object Solution {
def maxProfit(prices: Array[Int]): Int = {
var result = 0
for (i <- 1 until prices.length) {
if (prices(i) > prices(i - 1)) {
result += prices(i) - prices(i - 1)
}
}
result
}
}
```
----------------------- -----------------------
<div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div> <div align="center"><img src=https://code-thinking.cdn.bcebos.com/pics/01二维码一.jpg width=500> </img></div>