1220:统计元音字母序列的数目

This commit is contained in:
轩辕龙儿 2022-01-17 16:44:55 +08:00
parent 4c218cbe88
commit ed91afa9dd
4 changed files with 138 additions and 13 deletions

View File

@ -0,0 +1,78 @@
//给你一个整数 n请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串
//
//
// 字符串中的每个字符都应当是小写元音字母'a', 'e', 'i', 'o', 'u'
// 每个元音 'a' 后面都只能跟着 'e'
// 每个元音 'e' 后面只能跟着 'a' 或者是 'i'
// 每个元音 'i' 后面 不能 再跟着另一个 'i'
// 每个元音 'o' 后面只能跟着 'i' 或者是 'u'
// 每个元音 'u' 后面只能跟着 'a'
//
//
// 由于答案可能会很大所以请你返回 10^9 + 7 之后的结果
//
//
//
// 示例 1
//
// 输入n = 1
//输出5
//解释所有可能的字符串分别是"a", "e", "i" , "o" "u"
//
//
// 示例 2
//
// 输入n = 2
//输出10
//解释所有可能的字符串分别是"ae", "ea", "ei", "ia", "ie", "io", "iu", "oi", "ou" "ua"
//
//
// 示例 3
//
// 输入n = 5
//输出68
//
//
//
// 提示
//
//
// 1 <= n <= 2 * 10^4
//
// Related Topics 动态规划 👍 102 👎 0
package leetcode.editor.cn;
import java.util.Arrays;
//1220:统计元音字母序列的数目
public class CountVowelsPermutation {
public static void main(String[] args) {
Solution solution = new CountVowelsPermutation().new Solution();
// TO TEST
System.out.println(solution.countVowelPermutation(5));
}
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int countVowelPermutation(int n) {
int mod = (int)(1e9+7);
long[][] nums = new long[n][5];
Arrays.fill(nums[0], 1);
for (int i = 1; i < n; i++) {
nums[i][0] = (nums[i - 1][1] + nums[i - 1][2]+nums[i-1][4]) % mod;
nums[i][1] = (nums[i - 1][0] + nums[i - 1][2]) % mod;
nums[i][2] = (nums[i - 1][1] + nums[i - 1][3]) % mod;
nums[i][3] = nums[i - 1][2];
nums[i][4] = (nums[i - 1][2] + nums[i - 1][3]) % mod;
}
long result = 0;
for (int i = 0; i < 5; i++) {
result += nums[n - 1][i];
}
return (int)(result % mod);
}
}
//leetcode submit region end(Prohibit modification and deletion)
}

View File

@ -59,7 +59,6 @@ import java.util.Random;
class LinkedListRandomNode {
public static void main(String[] args) {
//测试代码
Solution solution = new LinkedListRandomNode().new Solution();
}
//力扣代码

View File

@ -41,20 +41,26 @@ public class SearchInsertPosition {
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int searchInsert(int[] nums, int target) {
int length = nums.length;
int start = 0;
int end = length - 1;
int result = length;
while (start <= end) {
int mid = (end - start) / 2 + start;
if (target <= nums[mid]) {
result = mid;
end = mid - 1;
} else {
start = mid + 1;
// int length = nums.length;
// int start = 0;
// int end = length - 1;
// int result = length;
// while (start <= end) {
// int mid = (end - start) / 2 + start;
// if (target <= nums[mid]) {
// result = mid;
// end = mid - 1;
// } else {
// start = mid + 1;
// }
// }
// return result;
for (int i = 0; i < nums.length; i++) {
if (nums[i] == target || nums[i] > target) {
return i;
}
}
return result;
return nums.length;
}
}
//leetcode submit region end(Prohibit modification and deletion)

View File

@ -0,0 +1,42 @@
<p>给你一个整数&nbsp;<code>n</code>,请你帮忙统计一下我们可以按下述规则形成多少个长度为&nbsp;<code>n</code>&nbsp;的字符串:</p>
<ul>
<li>字符串中的每个字符都应当是小写元音字母(<code>&#39;a&#39;</code>, <code>&#39;e&#39;</code>, <code>&#39;i&#39;</code>, <code>&#39;o&#39;</code>, <code>&#39;u&#39;</code></li>
<li>每个元音&nbsp;<code>&#39;a&#39;</code>&nbsp;后面都只能跟着&nbsp;<code>&#39;e&#39;</code></li>
<li>每个元音&nbsp;<code>&#39;e&#39;</code>&nbsp;后面只能跟着&nbsp;<code>&#39;a&#39;</code>&nbsp;或者是&nbsp;<code>&#39;i&#39;</code></li>
<li>每个元音&nbsp;<code>&#39;i&#39;</code>&nbsp;后面&nbsp;<strong>不能</strong> 再跟着另一个&nbsp;<code>&#39;i&#39;</code></li>
<li>每个元音&nbsp;<code>&#39;o&#39;</code>&nbsp;后面只能跟着&nbsp;<code>&#39;i&#39;</code>&nbsp;或者是&nbsp;<code>&#39;u&#39;</code></li>
<li>每个元音&nbsp;<code>&#39;u&#39;</code>&nbsp;后面只能跟着&nbsp;<code>&#39;a&#39;</code></li>
</ul>
<p>由于答案可能会很大,所以请你返回 模&nbsp;<code>10^9 + 7</code>&nbsp;之后的结果。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre><strong>输入:</strong>n = 1
<strong>输出:</strong>5
<strong>解释:</strong>所有可能的字符串分别是:&quot;a&quot;, &quot;e&quot;, &quot;i&quot; , &quot;o&quot;&quot;u&quot;
</pre>
<p><strong>示例 2</strong></p>
<pre><strong>输入:</strong>n = 2
<strong>输出:</strong>10
<strong>解释:</strong>所有可能的字符串分别是:&quot;ae&quot;, &quot;ea&quot;, &quot;ei&quot;, &quot;ia&quot;, &quot;ie&quot;, &quot;io&quot;, &quot;iu&quot;, &quot;oi&quot;, &quot;ou&quot;&quot;ua&quot;
</pre>
<p><strong>示例 3</strong></p>
<pre><strong>输入:</strong>n = 5
<strong>输出:</strong>68</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n &lt;= 2 * 10^4</code></li>
</ul>
<div><div>Related Topics</div><div><li>动态规划</li></div></div><br><div><li>👍 102</li><li>👎 0</li></div>