Fork me on GitHub

Leetcode-303- 区域和检索 - 数组不可变

Leetcode-303- 区域和检索 - 数组不可变

题目描述

  • 给定一个整数数组 nums,求出数组从索引 iji ≤ j)范围内元素的总和,包含 ij两点。

  • 实现 NumArray 类:

    • NumArray(int[] nums) 使用数组 nums 初始化对象

    • int sumRange(int i, int j)返回数组nums从索引i到 j(i ≤ j)范围内元素的总和,包含i、j两点(也就是 sum(nums[i], nums[i + 1], ... , nums[j]))

1
2
3
4
5
6
7
8
9
10
11
12
13
示例 1:

输入:
["NumArray", "sumRange", "sumRange", "sumRange"]
[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
输出:
[null, 1, -1, -3]

解释:
NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);
numArray.sumRange(0, 2); // return 1 ((-2) + 0 + 3)
numArray.sumRange(2, 5); // return -1 (3 + (-5) + 2 + (-1))
numArray.sumRange(0, 5); // return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))
  • 提示:

    • 0 <= nums.length <= 10^4

    • -10^5 <= nums[i] <= 10^5

    • 0 <= i <= j < nums.length

    • 最多调用10^4 次 sumRange 方法

阅读更多...

Leetcode-1734-解码异或后的排列

Leetcode-1734-解码异或后的排列

题目描述

  • 给你一个整数数组 perm,它是前 n 个正整数的排列,且 n 是个 奇数 。

  • 它被加密成另一个长度为n - 1的整数数组 encoded,满足 encoded[i] = perm[i] XOR perm[i + 1]。比方说,如果 perm = [1,3,2] ,那么 encoded = [2,1] 。

  • 给你 encoded数组,请你返回原始数组 perm。题目保证答案存在且唯一。

1
2
3
4
5
6
7
8
9
10
11
示例 1:

输入:encoded = [3,1]
输出:[1,2,3]
解释:如果 perm = [1,2,3] ,那么 encoded = [1 XOR 2,2 XOR 3] = [3,1]


示例 2:

输入:encoded = [6,5,4,6]
输出:[2,4,1,5,3]
  • 提示:
    • 3 <= n < 10^5
    • n 是奇数。
    • encoded.length == n - 1
阅读更多...

Leetcode-1720-解码异或后的数组

Leetcode-1720-解码异或后的数组

题目描述

  • 未知 整数数组 arr 由 n 个非负整数组成。
  • 经编码后变为长度为 n - 1的另一个整数数组 encoded,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到encoded = [1,2,3]
  • 给你编码后的数组 encoded和原数组arr的第一个元素 first(arr[0])
  • 请解码返回原数组arr。可以证明答案存在并且是唯一的。
1
2
3
4
5
6
7
8
9
10
示例 1:

输入:encoded = [1,2,3], first = 1
输出:[1,0,2,1]
解释:若 arr = [1,0,2,1] ,那么 first = 1 且 encoded = [1 XOR 0, 0 XOR 2, 2 XOR 1] = [1,2,3]

示例 2:

输入:encoded = [6,2,7,3], first = 4
输出:[4,2,0,7,4]
  • 提示:
    • 2 <= n <= 10^4
    • encoded.length == n - 1
    • 0 <= encoded[i] <= 10^5
    • 0 <= first <= 10^5
阅读更多...

Leetcode-554-砖墙

Leetcode-554-砖墙

题目描述

  • 你的面前有一堵矩形的、由 n 行砖块组成的砖墙。这些砖块高度相同(也就是一个单位高)但是宽度不同。每一行砖块的宽度之和相等。
  • 你现在要画一条 自顶向下 的、穿过 最少 砖块的垂线。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。
  • 给你一个二维数组 wall ,该数组包含这堵墙的相关信息。其中,wall[i]是一个代表从左至右每块砖的宽度的数组。你需要找出怎样画才能使这条线 穿过的砖块数量最少 ,并且返回 穿过的砖块数量 。

mark

1
2
3
4
5
6
7
8
9
示例 1:

输入:wall = [[1,2,2,1],[3,1,2],[1,3,2],[2,4],[3,1,2],[1,3,1,1]]
输出:2

示例 2:

输入:wall = [[1],[1],[1]]
输出:3
阅读更多...

Leetcode-137-只出现一次的数字II

Leetcode-137-只出现一次的数字 II

题目描述

给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。

示例 1:

1
2
输入:nums = [2,2,3,2]
输出:3

示例 2:

1
2
输入:nums = [0,1,0,1,0,1,99]
输出:99

提示:

1 <= nums.length <= 3 * 10^4
-2^31 <= nums[i] <= 2^31 - 1
nums 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次

阅读更多...

RabbitMQ-14-消息的可靠性保证

RabbitMQ-14-消息的可靠性保证

1. 前言

  • RabbitMQ如何确保消息可靠?很多时候,笔者的回答都是:说来话长的事情何来长话短说。的确,要确保消息可靠不只是单单几句就能够叙述明白的,包括Kafka也是如此。

  • 可靠并不是一个绝对的概念,曾经有人也留言说过类似全部磁盘损毁也会导致消息丢失,笔者戏答:还有机房被炸了也会导致消息丢失。

  • 可靠性是一个相对的概念,在条件合理的范围内系统所能确保的多少个9的可靠性。一切尽可能的趋于完美而无法企及于完美。

  • 我们可以尽可能的确保RabbitMQ的消息可靠。在详细论述RabbitMQ的消息可靠性之前,我们先来回顾下消息在RabbitMQ中的经由之路。

mark

如图所示,从AMQP协议层面上来说:

  • 消息先从生产者Producer 出发到达交换器 Exchange

  • 交换器Exchange 根据路由规则将消息转发到对应的Queue

  • 消息在队列Queue 上进行存储

  • 消费者Consumer订阅队列Queue并进行消费。

接下来 : 我们对于消息可靠性的分析也从这四个阶段来一一探讨。

阅读更多...

Leetcode-091-编码方案

Leetcode-091-解码方法

题目描述

  • 一条包含字母 A-Z 的消息通过以下映射进行了 编码
1
2
3
4
'A' -> 1
'B' -> 2
...
'Z' -> 26

解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,"11106" 可以映射为:

  • "AAJF" ,将消息分组为 (1 1 10 6)
  • "KJF" ,将消息分组为 (11 10 6)

说明:

  • 注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射中并不等价。
  • 给你一个只含数字的 非空 字符串 s ,请计算并返回 解码 方法的 总数 。
  • 题目数据保证答案肯定是一个 32 位 的整数。
阅读更多...
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信