怎样做浏览的网站不被发现,一键生成淘宝主图的软件,网站做成小程序,专业的集团网站开发开发周赛第一次解出来了三个#xff0c;虽然第三个比赛时候没解出来但是很近了#xff0c;就下来试了一下#xff0c;真的解出来了#xff0c;记录一下。 1.#xff08;100233. 重新分装苹果#xff09;题目描述#xff1a;
给你一个长度为 n 的数组 apple 和另一个长度为 …周赛第一次解出来了三个虽然第三个比赛时候没解出来但是很近了就下来试了一下真的解出来了记录一下。 1.100233. 重新分装苹果题目描述
给你一个长度为 n 的数组 apple 和另一个长度为 m 的数组 capacity 。
一共有 n 个包裹其中第 i 个包裹中装着 apple[i] 个苹果。同时还有 m 个箱子第 i 个箱子的容量为 capacity[i] 个苹果。
请你选择一些箱子来将这 n 个包裹中的苹果重新分装到箱子中返回你需要选择的箱子的 最小 数量。
注意同一个包裹中的苹果可以分装到不同的箱子中。第一版只需要看懂 同一个包裹中的苹果可以分装到不同的箱子中 这个题就是排序
class Solution {public int minimumBoxes(int[] apple, int[] capacity) {int sum0;for(int num:apple){sumnum;}Arrays.sort(capacity);int count0;for(int icapacity.length-1;i0;i--){if(sum0){return count;}sum-capacity[i];count;}return count;}
}2.100247. 幸福值最大化的选择方案题目描述
给你一个长度为 n 的数组 happiness 以及一个 正整数 k 。
n 个孩子站成一队其中第 i 个孩子的 幸福值 是 happiness[i] 。你计划组织 k 轮筛选从这 n 个孩子中选出 k 个孩子。
在每一轮选择一个孩子时所有 尚未 被选中的孩子的 幸福值 将减少 1 。注意幸福值 不能 变成负数且只有在它是正数的情况下才会减少。
选择 k 个孩子并使你选中的孩子幸福值之和最大返回你能够得到的 最大值 。
输入happiness [1,2,3], k 2
输出4
解释按以下方式选择 2 个孩子
- 选择幸福值为 3 的孩子。剩余孩子的幸福值变为 [0,1] 。
- 选择幸福值为 1 的孩子。剩余孩子的幸福值变为 [0] 。注意幸福值不能小于 0 。
所选孩子的幸福值之和为 3 1 4 。第一版不需要每次都给后面没选到的减一只需要记录后面的需要减去多少就可以
class Solution {public long maximumHappinessSum(int[] happiness, int k) {int lenhappiness.length;Arrays.sort(happiness);long res(long)happiness[len-1];for(int i1;ik;i){if((len-i-1)0happiness[len-i-1]-i0){happiness[len-i-1]-i;}else{return res;}reshappiness[len-i-1];}return res;}
}3.100251. 数组中的最短非公共子字符串题目描述
给你一个数组 arr 数组中有 n 个 非空 字符串。
请你求出一个长度为 n 的字符串 answer 满足
answer[i] 是 arr[i] 最短 的子字符串且它不是 arr 中其他任何字符串的子字符串。如果有多个这样的子字符串存在answer[i] 应该是它们中字典序最小的一个。如果不存在这样的子字符串answer[i] 为空字符串。
请你返回数组 answer 。
输入arr [cab,ad,bad,c]
输出[ab,,ba,]
解释求解过程如下
- 对于字符串 cab 最短没有在其他字符串中出现过的子字符串是 ca 或者 ab 我们选择字典序更小的子字符串也就是 ab 。
- 对于字符串 ad 不存在没有在其他字符串中出现过的子字符串。
- 对于字符串 bad 最短没有在其他字符串中出现过的子字符串是 ba 。
- 对于字符串 c 不存在没有在其他字符串中出现过的子字符串。第一版我是暴力求解只需要知道一个字符串的子字符串怎么求就可以还有就是含有多个长度一样的时候要取字典序最小的
class Solution {public String[] shortestSubstrings(String[] arr) {String[] resnew String[arr.length];for(int i0;iarr.length;i){res[i]genString(i,arr);}return res;}public String genString(int index,String[] arr){String temparr[index];boolean flag1true;for(int i0;iarr[index].length();i){for(int ji1;jarr[index].length();j){boolean flagtrue;for(int m0;marr.length;m){if(m!indexarr[m].contains(arr[index].substring(i,j))){flagfalse;break;}}if(flag){flag1false;if((j-i)temp.length())temparr[index].substring(i,j);else if((j-i)temp.length()){if(temp.compareTo(arr[index].substring(i,j))0){temparr[index].substring(i,j);}}}}}if(flag1){return ;}return temp;}
}总结一下就是第二题失误就是没看清题返回值是 long 已经很清晰说明了计算和过程中会出现 int 溢出的情况但是我当时没看清用 int 当作了返回值导致在 最后几个测试案例过不去耽搁了好久的时间。。。
第三题就是不会求字符串的 子字符串。。。
铭记