1662. 检查两个字符串数组是否相等
题目-1662. 检查两个字符串数组是否相等
从左到右依次合并word1和word2,然后比较合并后的单词是否相同即可。
class Solution {
public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
for (int i = 0; i < word1.length; i++){
sb1.append(word1[i]);
}
for (int i = 0; i < word2.length; i++){
sb2.append(word2[i]);
}
String s1 = sb1.toString();
String s2 = sb2.toString();
if (s1.equals(s2)) return true;
else return false;
}
}
1663. 具有给定数值的最小字符串
题目-1663. 具有给定数值的最小字符串
先全部给a,再倒叙增大
class Solution {
public String getSmallestString(int n, int k) {
int[] res = new int[n];
int cnt = n;
for (int i = 0; i < n; i++){
res[i] = 1;
}
k = k - n;
for (int i = n - 1; i >= 0; i--){
if (k >= 25){
res[i] += 25;
k -= 25;
}
else{
res[i] += k;
k = 0;
}
if (k == 0)break;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++){
sb.append(String.valueOf((char)('a' - 1 + res[i])));
}
return sb.toString();
}
}
1664. 生成平衡数组的方案数
题目-1664. 生成平衡数组的方案数
洋洋洒洒写了近百行代码,维护4个数组各种折腾考虑奇偶,终于AC,一看大神代码,卧槽,还能这么玩。
扫描一遍,计算奇偶和即可。
dp[i - 1] 表示在i之前的奇偶和,dp[n] - dp[i] 则为i之后的奇偶和,若二者相等,则平衡。
class Solution {
public int waysToMakeFair(int[] nums) {
int[] dp = new int[nums.length + 1];
for (int i = 1; i <= nums.length; i++){
if (i % 2 == 1){
dp[i] = dp[i - 1] + nums[i - 1];
}
else{
dp[i] = dp[i - 1] - nums[i - 1];
}
}
int cnt = 0;
for (int i = 1; i <= nums.length; i++){
if (dp[i - 1] == dp[nums.length] - dp[i]){
cnt++;
}
}
return cnt;
}
}
1665. 完成所有任务的最少初始能量
题目-1665. 完成所有任务的最少初始能量
这题,贪心,每次先处理能量差最多的,奈何我java不会排序。
class Solution {
public int minimumEffort(int[][] tasks) {
Arrays.sort(tasks, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
int x = o1[1] - o1[0];
int y = o2[1] - o2[0];
if (x == y) return o2[1]-o1[1];
return y - x;
}
});
int res = 0;
int last = 0;
for (int i = 0; i < tasks.length; i++){
if (tasks[i][1] - last > 0){
res += (tasks[i][1] - last);
last = tasks[i][1];
}
last = last - tasks[i][0];
}
return res;
}
}