Leetcode每日随机2021/4/23
发布日期:2021-05-07 13:49:57 浏览次数:20 分类:精选文章

本文共 1862 字,大约阅读时间需要 6 分钟。

题目一:将每个单词转换为摩尔斯电码,统计唯一的摩尔斯电码表示数量。

题目二:生成一个行数为numRows的三角形数列表,其中每个数都是其上方和左方的数之和。

这两个题目都是相当典型的算法题目,分别考察了对编程思维和算法设计的理解。第一个题目需要对编程中的字符串操作有深入的理解,而第二个题目则考察了递归算法的应用。

代码

leetcode804

class Solution {
String[] morse = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."};
public int uniqueMorseRepresentations(String[] words) {
Set
set = new HashSet<>();
for (String word : words) {
set.add(wordToMorse(word));
}
return set.size();
}
private String wordToMorse(String word) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < word.length(); i++) {
char c = word.charAt(i);
sb.append(morse[c - 'a']);
}
return sb.toString();
}
}

leetcode118

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
class Solution {
List
res = new ArrayList<>();
List
generate(int numRows) {
if (numRows == 0) {
return res;
}
List
first = new ArrayList<>();
first.add(1);
res.add(first);
for (int i = 1; i < numRows; i++) {
List
last = res.get(res.size() - 1);
List
temp = new ArrayList<>();
temp.add(1);
for (int j = 1; j < last.size(); j++) {
temp.add(last.get(j) + last.get(j - 1));
}
temp.add(1);
res.add(temp);
}
return res;
}
}

这两个题目的解法都非常经典。第一个题目通过将每个单词转换为对应的摩尔斯电码,并将所有转换后的结果存储在集合中,来统计唯一的摩尔斯电码表示数量。集合自动去重,所以只需返回集合的大小即可。

第二个题目则通过递归的方式生成一个三角形数列表。每个数都是其上方和左方的数之和,最终形成一个类似于杨辉三角的结构。通过递归实现,可以清晰地看到每个数是如何从上方和左方的数生成的。

上一篇:Leetcode每日随机2021/4/24
下一篇:Leetcode每日随机2021/4/22

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年04月13日 11时44分20秒