20200916:leetcode34周双周赛题解
leetcode34周双周赛题解
- 题目
- 思路与算法
- 代码实现
- 写在最后
题目
1.1572. 矩阵对角线元素的和
2.1573. 分割字符串的方案数
3.1574. 删除最短的子数组使剩余数组有序
4.1575. 统计所有可行路径
思路与算法
- 第一题不多bb第二题是个数学题,排列组合,找到那些关键节点就行了。
- 第三题找开头和结尾的有序端的关键节点,更新关键节点信息即可
- 第四题典型dp+dfs即可。
- 没啥时间写python和c++了,java将就看
代码实现
1.1572. 矩阵对角线元素的和
class Solution {public int diagonalSum(int[][] mat) {int len = mat.length;int mid = len/ 2;int ans = 0;if (len == 1) {return mat[0][0];}for (int i = 0; i < len; i++) {ans += mat[i][i];ans += mat[i][len - i - 1];}if (len % 2 != 0) {ans -= mat[mid][mid];}return ans;}
}
2.1573. 分割字符串的方案数
class Solution {public int numWays(String s) {int len = s.length();int cnt = 0;for (int i = 0; i < len; i++) {if (s.charAt(i) == '1') {cnt++;}}if (cnt == 0) {int n = len - 1;return (int) ((1L * n * (n - 1) / 2) % 1000000007);} else if (cnt % 3 != 0) {return 0;} else {int k = cnt / 3;int curCnt = 0;int m = 0,n = 0;for (int i = 0; i < len; i++) {if (s.charAt(i) == '1') {curCnt++;if (curCnt == k) {m = i;}if (curCnt == k + 1) {m = i - m;}if (curCnt == k * 2) {n = i;}if (curCnt == k * 2 + 1) {n = i - n;break;}}}return (int)((1L * m * n) % 1000000007);}}
}
3.1574. 删除最短的子数组使剩余数组有序
class Solution {public int findLengthOfShortestSubarray(int[] arr) {int len = arr.length;int left = 0;while (left + 1 < len && (arr[left] <= arr[left + 1])) {left++;}// 全阶段有序,返回0if (left == len - 1) {return 0;}// 找出第一阶段有序的尾索引和第三阶段有序的头索引int right = len - 1;while (right >= 0 && (arr[right] >= arr[right-1])) {right--;}// 极端情况,直接删除[0,right-1]或者[left+1,len-1]int result = Math.min(len - 1 - left,right);// 从之前找到的中间段的索引的两个端点开始遍历,判断增加哪个索引使有序int i = 0,j = right;while (i <= left && j <= len - 1) {if (arr[i] <= arr[j]) {result = Math.min(j - i - 1,result);i++;} else {j++;}}return result;}
}
4.1575. 统计所有可行路径
class Solution {int[][] map;int dp[][];public int countRoutes(int[] locations, int start, int finish, int fuel) {int len = locations.length;map = new int[len][len];for (int i = 0; i < len; i++) {for (int j = 0; j < len; j++) {map[i][j] = Math.abs(locations[i] - locations[j]);}}dp = new int[len][fuel + 1]; for (int[] temp : dp) {Arrays.fill(temp, -1);}return dfs(start, finish, fuel);}private int dfs(int start, int finish, int fuel) {if (dp[start][fuel] == -1) {int temp = start == finish ? 1 : 0;for (int i = 0; i < map.length; i++) {if (i != start && map[start][i] <= fuel) {temp += dfs(i, finish, fuel - map[start][i]);temp %= 1000000007;}}dp[start][fuel] = temp;}return dp[start][fuel];}
}
写在最后
人生苦短,自己对得起自己就好。加油吧自己
20200916:leetcode34周双周赛题解相关推荐
- 20200922:leetcode35周双周赛题解记录(下)
leetcode35周双周赛题解记录(下) 题目 思路与算法 代码实现 复杂度分析 题目 3.1590. 使数组和能被 P 整除 4.1591. 奇怪的打印机 II 思路与算法 第三题前缀和衍生题目, ...
- 20200920:leetcode35周双周赛题解(上)
leetcode35周双周赛题解(上) 题目 思路与算法 代码实现 写在最后 题目 1.5503. 所有奇数长度子数组的和 2.5505. 所有排列中的最大和 思路与算法 第一题暴力就行了,看了很多大 ...
- 20200827:2020力扣第33周双周赛题解
2020力扣第33周双周赛题解 题目一 示例 解题思路与代码实现 题目二 示例 解题思路与代码实现 题目三 解题思路与代码实现 题目四 示例 解题思路与代码实现 写在最后 题目一 题目一:千位分隔数 ...
- 20200727:力扣第31周双周赛题解
力扣第31周双周赛题解 题目一:在区间范围内统计奇数数目 给你两个非负整数low和high,请你返回low和high之间(包含二者)奇数的数目 0 <= low <= high <= ...
- 20220219:力扣第72场双周赛题解
力扣第72场双周赛 题目 思路与算法 代码实现 写在最后 题目 统计数组中相等且可以被整除的数对 找到和为给定整数的三个连续整数 拆分成最多数目的偶整数之和 统计数组中好三元组数目 思路与算法 前三题 ...
- 20211201:力扣第268周双周赛(上)
力扣第268周双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 两栋颜色不同且距离最远的房子 给植物浇水 思路与算法 双指针遍历即可,维护那个索引最大差值即可. 模拟题,正常情况需要每次走一步 ...
- 20210530:力扣第53场双周赛题解
力扣第53场双周赛题解 题目 思路与算法 代码实现 写在最后 题目 长度为三且各字符不同的子字符串 数组中最大数对和的最小值 矩阵中最大的三个菱形和 思路与算法 长度为三且各字符不同的子字符串:遍历查 ...
- 20210119:力扣第42周双周赛(下)
力扣第42周双周赛(下) 题目 思路与算法 代码实现 写在最后 题目 修改后的最大二进制字符串 得到连续 K 个 1 的最少相邻交换次数 思路与算法 修改后的最大二进制字符串 这道题的思路很简单,交换 ...
- 20210101:力扣第42周双周赛(上)
力扣第42周双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 无法吃午餐的学生数量 平均等待时间 思路与算法 无法吃午餐的学生数量 本题直接暴力模拟也没问题,但是这应该不是题目的本意,我们可以 ...
最新文章
- 13KB的代码能做什么?有些人可是弄出了一个完整的游戏!
- rhel7安装oracle11g 的配置和安装过程
- 产线数字化软件源码_数字化工厂规划的十大核心要素
- 2018牛客网暑期ACM多校训练营(第十场)A	Rikka with Lowbit (树状数组)
- SQL Cookbook:二、查询结果排序(1)以指定的次序返回查询结果
- 10分钟解决Redis安装和Springboot整合
- Clustered Data ONTAP Fundamentals课程学习(1)
- Eclipse查看源码乱码问题
- sudo修改文件夹名字_用 Python 高效智能管理文件夹
- SQL知识点脑图(一张图总结SQL)
- 三张图看懂 clientheight、offsetheight、scrollheight
- 通过HDMI获取显示器EDID数据
- 【Office】编辑宏报错:不能在隐藏工作簿中编辑宏。请选定取消窗口隐藏”命令以显示工作簿
- 与其说我害怕成为普通人,还不如说我害怕生活,害怕找不到一种自己喜欢的方式去度过人生...
- pdf添加水印的方法,pdf加水印步骤
- matlab求解非线性0-1规划案例
- 图片批量转换成pdf
- 初识CMake,如何编写一个CMake工程(下)
- 2023电工杯数学建模思路 - 复盘:校园消费行为分析
- 英飞凌硅麦可以接收到超声波吗?