mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 04:06:51 +08:00
Merge branch 'master' of github.com:youngyangyang04/leetcode-master
This commit is contained in:
@ -88,7 +88,7 @@ dp[i] 是依靠 dp[i - j]的状态,所以遍历i一定是从前向后遍历,
|
|||||||
所以遍历顺序为:
|
所以遍历顺序为:
|
||||||
```CPP
|
```CPP
|
||||||
for (int i = 3; i <= n ; i++) {
|
for (int i = 3; i <= n ; i++) {
|
||||||
for (int j = 1; j < i - 1; j++) {
|
for (int j = 1; j <= i / 2; j++) {
|
||||||
dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));
|
dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -191,7 +191,7 @@ public:
|
|||||||
dp[2] = 2;
|
dp[2] = 2;
|
||||||
dp[3] = 3;
|
dp[3] = 3;
|
||||||
for (int i = 4; i <= n ; i++) {
|
for (int i = 4; i <= n ; i++) {
|
||||||
for (int j = 1; j < i - 1; j++) {
|
for (int j = 1; j <= i / 2; j++) {
|
||||||
dp[i] = max(dp[i], dp[i - j] * dp[j]);
|
dp[i] = max(dp[i], dp[i - j] * dp[j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -248,7 +248,7 @@ class Solution:
|
|||||||
# 假设对正整数 i 拆分出的第一个正整数是 j(1 <= j < i),则有以下两种方案:
|
# 假设对正整数 i 拆分出的第一个正整数是 j(1 <= j < i),则有以下两种方案:
|
||||||
# 1) 将 i 拆分成 j 和 i−j 的和,且 i−j 不再拆分成多个正整数,此时的乘积是 j * (i-j)
|
# 1) 将 i 拆分成 j 和 i−j 的和,且 i−j 不再拆分成多个正整数,此时的乘积是 j * (i-j)
|
||||||
# 2) 将 i 拆分成 j 和 i−j 的和,且 i−j 继续拆分成多个正整数,此时的乘积是 j * dp[i-j]
|
# 2) 将 i 拆分成 j 和 i−j 的和,且 i−j 继续拆分成多个正整数,此时的乘积是 j * dp[i-j]
|
||||||
for j in range(1, i - 1):
|
for j in range(1, i / 2 + 1):
|
||||||
dp[i] = max(dp[i], max(j * (i - j), j * dp[i - j]))
|
dp[i] = max(dp[i], max(j * (i - j), j * dp[i - j]))
|
||||||
return dp[n]
|
return dp[n]
|
||||||
```
|
```
|
||||||
@ -305,7 +305,7 @@ var integerBreak = function(n) {
|
|||||||
dp[2] = 1
|
dp[2] = 1
|
||||||
|
|
||||||
for(let i = 3; i <= n; i++) {
|
for(let i = 3; i <= n; i++) {
|
||||||
for(let j = 1; j < i; j++) {
|
for(let j = 1; j <= i / 2; j++) {
|
||||||
dp[i] = Math.max(dp[i], dp[i - j] * j, (i - j) * j)
|
dp[i] = Math.max(dp[i], dp[i - j] * j, (i - j) * j)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -330,7 +330,7 @@ function integerBreak(n: number): number {
|
|||||||
const dp: number[] = new Array(n + 1).fill(0);
|
const dp: number[] = new Array(n + 1).fill(0);
|
||||||
dp[2] = 1;
|
dp[2] = 1;
|
||||||
for (let i = 3; i <= n; i++) {
|
for (let i = 3; i <= n; i++) {
|
||||||
for (let j = 1; j <= i - 2; j++) {
|
for (let j = 1; j <= i / 2; j++) {
|
||||||
dp[i] = Math.max(dp[i], j * dp[i - j], j * (i - j));
|
dp[i] = Math.max(dp[i], j * dp[i - j], j * (i - j));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -190,23 +190,23 @@ func largestSumAfterKNegations(nums []int, K int) int {
|
|||||||
### Javascript
|
### Javascript
|
||||||
```Javascript
|
```Javascript
|
||||||
var largestSumAfterKNegations = function(nums, k) {
|
var largestSumAfterKNegations = function(nums, k) {
|
||||||
nums.sort((a, b) => {
|
|
||||||
return Math.abs(b) - Math.abs(a)
|
nums.sort((a,b) => Math.abs(b) - Math.abs(a))
|
||||||
})
|
|
||||||
for(let i = 0; i < nums.length; i++) {
|
for(let i = 0 ;i < nums.length; i++){
|
||||||
if(nums[i] < 0 && k > 0) {
|
if(nums[i] < 0 && k > 0){
|
||||||
nums[i] *= -1
|
nums[i] = - nums[i];
|
||||||
k--
|
k--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(k > 0 && k % 2 === 1) {
|
// 若k还大于0,则寻找最小的数进行不断取反
|
||||||
nums[nums.length - 1] *= -1
|
while( k > 0 ){
|
||||||
|
nums[nums.length-1] = - nums[nums.length-1]
|
||||||
|
k--;
|
||||||
}
|
}
|
||||||
k = 0
|
|
||||||
|
|
||||||
return nums.reduce((a, b) => {
|
return nums.reduce((a, b) => {
|
||||||
return a + b
|
a + b
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user