本文主要是介绍第186场周赛,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第186场周赛
- 1422. 分割字符串的最大得分
- 1423. 可获得的最大点数
- 1424. 对角线遍历 II
1422. 分割字符串的最大得分
class Solution {public int maxScore(String s) {int res=0,cnt1=0,cnt0=0;for(int i=0;i<s.length();i++) {if(s.charAt(i)=='1') {cnt1++;}}for(int j=0;j<s.length()-1;j++) {if(s.charAt(j)=='0') {cnt0++;}else {cnt1--;}res = Math.max(res, cnt0+cnt1);}return res;}
}
1423. 可获得的最大点数
参考代码
int len = cardPoints.length;int [] pre = new int[len+1];pre[0] = 0;for(int i=0;i<len;i++) {pre[i+1]=pre[i]+cardPoints[i];}int max = -1;for(int i=0;i<=k;i++) {max = Math.max(max, pre[i] + pre[len] - pre[len-k+i]);}return max;
1424. 对角线遍历 II
参考代码
class Solution {public int[] findDiagonalOrder(List<List<Integer>> nums) {int len =0;//treemap会根据key的大小进行排列Map<Integer,List<Integer>> maps = new TreeMap<>();for(int i=0;i<nums.size();i++) {len+=nums.get(i).size();for(int j=0;j<nums.get(i).size();j++) {if(maps.containsKey(i+j)) {maps.get(i+j).add(nums.get(i).get(j));}else {List<Integer> list = new ArrayList<Integer>();list.add(nums.get(i).get(j));maps.put(i+j, list);}}}int[] ans = new int[len];int index = 0;for(int key : maps.keySet()) { // 遍历mapList<Integer> list = maps.get(key);for(int j = list.size() - 1;j >= 0;j--) {ans[index]=maps.get(key).get(j);index++;}}return ans; }
}
这篇关于第186场周赛的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!