LeetCode
LeetCode 题解
W_Weirdo
这个作者很懒,什么都没留下…
展开
-
LeetCode 每日一题:528. 按权重随机选择
528. 按权重随机选择 原题地址 题目类型 题意 分析 前缀和 + 二分 时间复杂度 O()O( )O() 代码 class Solution { int[] pre; int sum; public Solution(int[] w) { pre = new int[w.length]; pre[0] = w[0]; for (int i = 1, len = w.length; i原创 2021-08-30 10:03:18 · 89 阅读 · 0 评论 -
LeetCode 每日一题:1190. 反转每对括号间的子串
LeetCode 每日一题:1190. 反转每对括号间的子串 原题链接 分析: 将括号的反转理解为逆序的遍历括号,然后通过栈预处理出每个括号对应的括号的索引方便跳转。 代码: class Solution { public String reverseParentheses(String s) { Stack<Integer> st = new Stack<Integer>(); int[] book = new int[s.length()原创 2021-05-26 14:05:14 · 84 阅读 · 1 评论 -
LeetCode 每日一题 :1738. 找出第 K 大的异或坐标值
LeetCode 每日一题 :1738. 找出第 K 大的异或坐标值 原题链接 分析 根据题意可得是要求所有以(0,0)为左上顶点的子矩阵异或和的第 K 大值。所以可以处理出一个二维前缀异或和,然后将所有值放入一个容器中取出第 K 大值(可以排序后求或者使用快速排序的思想来求)。 代码1 class Solution { public int kthLargestValue(int[][] matrix, int k) { int n = matrix.length;原创 2021-05-19 17:42:15 · 104 阅读 · 0 评论 -
LeetCode 每日一题:1442. 形成两个异或相等数组的三元组数目
LeetCode 每日一题:1442. 形成两个异或相等数组的三元组数目 原题链接 分析: 维护一个异或前缀和数组 pre(pre[i] 表示 [0,i) 之间所有数的异或和),那么问题所求的两个 a、b 数组则可以表示为 a: pre[i] ^ pre[j] b: pre[j] ^ pre[k] 那么 a == b => pre[i] ^ pre[j] = pre[j] ^ pre[k] => pre[i] = pre[k] 所以枚举所有的 i 、j、 k 并统计答案即可 代码: O(n^3)原创 2021-05-18 07:54:19 · 86 阅读 · 0 评论 -
LeetCode 每日一题 :993. 二叉树的堂兄弟节点
LeetCode 每日一题 :993. 二叉树的堂兄弟节点 原题链接 分析: 判断两个节点是否为堂兄弟节点就需要判断它们的父节点是否不同以及它们的高度是否相同。那么问题就变为了求两个节点的父节点及其高度。使用深度优先遍历这棵树即可。 代码 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; *原创 2021-05-17 17:26:27 · 94 阅读 · 0 评论