leetcode34周双周赛题解

  • 题目
  • 思路与算法
  • 代码实现
  • 写在最后

题目

1.1572. 矩阵对角线元素的和


2.1573. 分割字符串的方案数

3.1574. 删除最短的子数组使剩余数组有序

4.1575. 统计所有可行路径

思路与算法

  1. 第一题不多bb第二题是个数学题,排列组合,找到那些关键节点就行了。
  2. 第三题找开头和结尾的有序端的关键节点,更新关键节点信息即可
  3. 第四题典型dp+dfs即可。
  4. 没啥时间写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周双周赛题解相关推荐

  1. 20200922:leetcode35周双周赛题解记录(下)

    leetcode35周双周赛题解记录(下) 题目 思路与算法 代码实现 复杂度分析 题目 3.1590. 使数组和能被 P 整除 4.1591. 奇怪的打印机 II 思路与算法 第三题前缀和衍生题目, ...

  2. 20200920:leetcode35周双周赛题解(上)

    leetcode35周双周赛题解(上) 题目 思路与算法 代码实现 写在最后 题目 1.5503. 所有奇数长度子数组的和 2.5505. 所有排列中的最大和 思路与算法 第一题暴力就行了,看了很多大 ...

  3. 20200827:2020力扣第33周双周赛题解

    2020力扣第33周双周赛题解 题目一 示例 解题思路与代码实现 题目二 示例 解题思路与代码实现 题目三 解题思路与代码实现 题目四 示例 解题思路与代码实现 写在最后 题目一 题目一:千位分隔数 ...

  4. 20200727:力扣第31周双周赛题解

    力扣第31周双周赛题解 题目一:在区间范围内统计奇数数目 给你两个非负整数low和high,请你返回low和high之间(包含二者)奇数的数目 0 <= low <= high <= ...

  5. 20220219:力扣第72场双周赛题解

    力扣第72场双周赛 题目 思路与算法 代码实现 写在最后 题目 统计数组中相等且可以被整除的数对 找到和为给定整数的三个连续整数 拆分成最多数目的偶整数之和 统计数组中好三元组数目 思路与算法 前三题 ...

  6. 20211201:力扣第268周双周赛(上)

    力扣第268周双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 两栋颜色不同且距离最远的房子 给植物浇水 思路与算法 双指针遍历即可,维护那个索引最大差值即可. 模拟题,正常情况需要每次走一步 ...

  7. 20210530:力扣第53场双周赛题解

    力扣第53场双周赛题解 题目 思路与算法 代码实现 写在最后 题目 长度为三且各字符不同的子字符串 数组中最大数对和的最小值 矩阵中最大的三个菱形和 思路与算法 长度为三且各字符不同的子字符串:遍历查 ...

  8. 20210119:力扣第42周双周赛(下)

    力扣第42周双周赛(下) 题目 思路与算法 代码实现 写在最后 题目 修改后的最大二进制字符串 得到连续 K 个 1 的最少相邻交换次数 思路与算法 修改后的最大二进制字符串 这道题的思路很简单,交换 ...

  9. 20210101:力扣第42周双周赛(上)

    力扣第42周双周赛(上) 题目 思路与算法 代码实现 写在最后 题目 无法吃午餐的学生数量 平均等待时间 思路与算法 无法吃午餐的学生数量 本题直接暴力模拟也没问题,但是这应该不是题目的本意,我们可以 ...

最新文章

  1. 13KB的代码能做什么?有些人可是弄出了一个完整的游戏!
  2. rhel7安装oracle11g 的配置和安装过程
  3. 产线数字化软件源码_数字化工厂规划的十大核心要素
  4. 2018牛客网暑期ACM多校训练营(第十场)A Rikka with Lowbit (树状数组)
  5. SQL Cookbook:二、查询结果排序(1)以指定的次序返回查询结果
  6. 10分钟解决Redis安装和Springboot整合
  7. Clustered Data ONTAP Fundamentals课程学习(1)
  8. Eclipse查看源码乱码问题
  9. sudo修改文件夹名字_用 Python 高效智能管理文件夹
  10. SQL知识点脑图(一张图总结SQL)
  11. 三张图看懂 clientheight、offsetheight、scrollheight
  12. 通过HDMI获取显示器EDID数据
  13. 【Office】编辑宏报错:不能在隐藏工作簿中编辑宏。请选定取消窗口隐藏”命令以显示工作簿
  14. 与其说我害怕成为普通人,还不如说我害怕生活,害怕找不到一种自己喜欢的方式去度过人生...
  15. pdf添加水印的方法,pdf加水印步骤
  16. matlab求解非线性0-1规划案例
  17. 图片批量转换成pdf
  18. 初识CMake,如何编写一个CMake工程(下)
  19. 2023电工杯数学建模思路 - 复盘:校园消费行为分析
  20. 英飞凌硅麦可以接收到超声波吗?

热门文章

  1. 300 秒带你吃透大数据!
  2. 网易游戏回应裁员 10%;字节跳动秘密研发手机;iOS 13 beta 5 发布 | 极客头条
  3. 微信雄踞,头条社交梦破碎?| 畅言
  4. MongoDB 凉了?
  5. Google 被祭天了!
  6. 被小程序冲击的人,请正视小程序!
  7. 道了 14 年歉的扎克伯格,继续犯错的 Facebook
  8. 世间再无霍金,时间永留简史
  9. 史上最大漏洞危机:影响所有 iPhone、Android、PC 设备,修复困难重重
  10. unity android profile adt,Unity Android OBB