(该模块仅为记录本人的leetcode的练习记录)
文章目录
2000.反转单词前缀(easy)
解题思路:先找到匹配的字符位置,若是不存在则直接返回源字符串,反正反转前部分。
代码:
package LeetCode.Code2022.February;
public class Solution2000 {
public String reversePrefix(String word, char ch) {
int index = -1;
index = word.indexOf(ch);
if (index == -1) {
return word;
}
return new StringBuilder(word.substring(0, index + 1)).reverse() + word.substring(index + 1);
}
}
1414.和为K的最少斐波那契数字数目(medium)
解题思路:先得到所有小于k的斐波那契额数集,存放在list中,然后每次从list中获取最大的数与K进行比较,若该数小于等于K则将该数视为解集之一,然后将K减去该数,反之获取第二大的数进行比较,重复上述步骤。
代码:
package LeetCode.Code2022.February;
import java.util.ArrayList;
import java.util.List;
public class Solution1414 {
public int findMinFibonacciNumbers(int k) {
List<Integer> list = fibonacci(k);
int ans = 0;
int index = list.size() - 1;
while (k > 0) {
if (list.get(index) <= k) {
k -= list.get(index);
ans++;
} else {
index = index > 0 ? index - 1 : 0;
}
}
return ans;
}
List<Integer> fibonacci(int k) {
List<Integer> hashSet = new ArrayList<>();
int f1 = 1;
int f2 = 1;
int fn = 0;
hashSet.add(1);
while (fn <= k) {
fn = f1 + f2;
f1 = f2;
f2 = fn;
hashSet.add(fn);
}
return hashSet;
}
}
1725.可以形成最大正方形的矩形数目(easy)
解题思路:先遍历一遍记录可形成的最大正方形边长,然后在遍历一遍可以形成最大正方形边长的数目
代码:
package LeetCode.Code2022.February;
public class Solution1725 {
public int countGoodRectangles(int[][] rectangles) {
int maxLen = 0;
for (int i = 0; i < rectangles.length; i++) {
int len = Math.min(rectangles[i][0], rectangles[i][1]);
if (maxLen < len) {
maxLen = len;
}
}
int ans = 0;
for (int i = 0; i < rectangles.length; i++) {
int len = Math.min(rectangles[i][0], rectangles[i][1]);
if (len == maxLen) {
ans++;
}
}
return ans;
}
}