本文主要是介绍第 216 场周赛,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第 216场周赛
- 5605. 检查两个字符串数组是否相等
- 5606. 具有给定数值的最小字符串
- 5607. 生成平衡数组的方案数
- 5608. 完成所有任务的最少初始能量
5605. 检查两个字符串数组是否相等
class Solution {public boolean arrayStringsAreEqual(String[] word1, String[] word2) {int len = word1.length;List<Character> lists = new ArrayList<Character>();for(int i=0;i<len;i++) {for(int j=0;j<word1[i].length();j++) {lists.add(word1[i].charAt(j));}}int count = 0;int len2 = word2.length;for(int i=0;i<len2;i++) {for(int j=0;j<word2[i].length();j++) {if(count>lists.size()) {return false;}if(word2[i].charAt(j)!=lists.get(count)) {return false;}count++;}}if(count<lists.size()) {return false;}return true;}
}
5606. 具有给定数值的最小字符串
class Solution {public String getSmallestString(int n, int k) {char[] res = new char[n];int zCount = k / 26 ;while((k-26*zCount)<(n-zCount) && zCount>0) {zCount--;}for(int i=n-1;i>=n-zCount;i--) {res[i] = 'z';}for(int i=0;i<n-zCount-1;i++) {res[i] = 'a';}int dis = k-26*zCount-(n-zCount-1);// System.out.println("zCount:"+zCount+" last char= "+ dis);res[n-zCount-1] = (char)('a'+ ( dis - 1));return String.valueOf(res);}
}
5607. 生成平衡数组的方案数
class Solution {public int waysToMakeFair(int[] nums) {int len = nums.length;double[] odd = new double[len+1];double[] even = new double[len+1];int res = 0;for(int i=1;i<=len;i++) {if(i%2==0) {//原奇数位odd[i] = odd[i-1]+nums[i-1];even[i] = even[i-1];}else {//原偶数位odd[i] = odd[i-1];even[i] = even[i-1]+nums[i-1];}}
// for(int i=1;i<=nums.length;i++) {
// System.out.print(odd[i]+" ");
// }
// System.out.println();
//
// for(int i=1;i<=nums.length;i++) {
// System.out.print(even[i]+" ");
// }
// System.out.println();for(int i=1;i<=len;i++) {double sumOdd = 0;double sumEven = 0;//当前位是奇数,求和之前位的奇数位和后面的偶数位和sumOdd = odd[i-1]+even[len]-even[i];sumEven = even[i-1]+odd[len]-odd[i];if(sumOdd == sumEven) {res++;}}return res;}
}
5608. 完成所有任务的最少初始能量
class Solution {public int minimumEffort(int[][] tasks) {Arrays.sort(tasks,new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {// TODO Auto-generated method stubif(Math.abs(o1[1]-o1[0])==Math.abs(o2[1]-o2[0])) {return o2[1]-o1[1];}return Math.abs(o2[1]-o2[0])-Math.abs(o1[1]-o1[0]);}});
// System.out.println("test!!!");
// for(int i=0;i<tasks.length;i++) {
// System.out.println(tasks[i][0]+" "+tasks[i][1]);
// }int res=0;int total = 0;for(int i=0;i<tasks.length;i++) {
// res += tasks[i][1]-(tasks[i-1][1]-tasks[i-1][0]);res = Math.max(res,total+tasks[i][1]);total += tasks[i][0];}return res;}
}
这篇关于第 216 场周赛的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!