所以我最近一直在学习动态规划 (DP),当我遇到以下问题时,我决定使用 DP,但由于我是算法的初学者,我不确定这是否是 DP 的有效示例。
问题:
给定一个数组 nums。我们将数组的运行总和定义为 runningSum[i] = sum(nums[0]…nums[i])。返回 nums 的运行总和。
Example 1:
Input: nums = [1,2,3,4]
Output: [1,3,6,10]
Explanation: Running sum is obtained as follows: [1, 1+2, 1+2+3, 1+2+3+4].
Run Code Online (Sandbox Code Playgroud)
这是我的“DP”解决方案:
class Solution {
public int[] runningSum(int[] nums) {
int[] arr = new int[nums.length];
int sum = 0;
for(int i = 0; i < nums.length; i++){
arr[i] = nums[i] + sum;
sum += nums[i];
}
return arr;
}
}
Run Code Online (Sandbox Code Playgroud) 我们得到一个句子文本(一个句子是一串空格分隔的单词),格式如下:
第一个字母大写。文本中的每个单词都由一个空格分隔。我们的任务是重新排列文本中的单词,以便所有单词都按其长度递增的顺序重新排列。如果两个单词的长度相同,我们将它们按原来的顺序排列。
Example:
Input: text = "Keep calm and code on"
Output: "On and keep calm code"
Explanation: Output is ordered as follows:
"On" 2 letters.
"and" 3 letters.
"keep" 4 letters in case of tie order by position in the original text.
"calm" 4 letters.
"code" 4 letters.
Run Code Online (Sandbox Code Playgroud)
解决办法是:
Example:
Input: text = "Keep calm and code on"
Output: "On and keep calm code"
Explanation: Output is ordered as follows:
"On" 2 letters.
"and" 3 letters.
"keep" 4 letters …Run Code Online (Sandbox Code Playgroud)