LeetCode第200场周赛:统计三元组的个数+ 找出数组游戏的赢家

5475. 统计好三元组

题目:给你一个整数数组 arr ,以及 a、b 、c 三个整数。请你统计其中好三元组的数量。

如果三元组 (arr[i], arr[j], arr[k]) 满足下列全部条件,则认为它是一个 好三元组 。

  • 0 <= i < j < k < arr.length
  • |arr[i] - arr[j]| <= a
  • |arr[j] - arr[k]| <= b
  • |arr[i] - arr[k]| <= c
  • 其中 |x| 表示 x 的绝对值。

返回 好三元组的数量 。

示例 1:
输入:arr = [3,0,1,1,9,7], a = 7, b = 2, c = 3
输出:4
解释:一共有 4 个好三元组:[(3,0,1), (3,0,1), (3,1,1), (0,1,1)] 。

示例 2:
输入:arr = [1,1,2,2,3], a = 0, b = 0, c = 1
输出:0
解释:不存在满足所有条件的三元组。

提示:
3 <= arr.length <= 100
0 <= arr[i] <= 1000
0 <= a, b, c <= 1000

  • Python代码实现,原地比较,实现效果在时间和内存上达到双100%
class Solution:
    def countGoodTriplets(self, arr: List[int], a: int, b: int, c: int) -> int:
        count = 0
        for i in range(len(arr)-2):
            for j in range(i+1,len(arr) - 1):
                for k in range(j+1,len(arr)):
                    if abs(arr[i] - arr[j]) <= a and abs(arr[j]-arr[k]) <= b and abs(arr[i] - arr[k]) <= c:
                        count += 1
        return count

5476. 找出数组游戏的赢家

给你一个由 不同 整数组成的整数数组 arr 和一个整数 k 。

每回合游戏都在数组的前两个元素(即 arr[0] 和 arr[1] )之间进行。比较 arr[0] 与 arr[1] 的大小,较大的整数将会取得这一回合的胜利并保留在位置 0 ,较小的整数移至数组的末尾。当一个整数赢得 k 个连续回合时,游戏结束,该整数就是比赛的 赢家 。

返回赢得比赛的整数。

题目数据 保证 游戏存在赢家。

示例 1:
输入:arr = [2,1,3,5,4,6,7], k = 2
输出:5
解释:一起看一下本场游戏每回合的情况:
LeetCode第200场周赛:统计三元组的个数+ 找出数组游戏的赢家_第1张图片

因此将进行 4 回合比赛,其中 5 是赢家,因为它连胜 2 回合。

示例 2:
输入:arr = [3,2,1], k = 10
输出:3
解释:3 将会在前 10 个回合中连续获胜。

示例 3:
输入:arr = [1,9,8,2,3,7,6,4,5], k = 7
输出:9

示例 4:
输入:arr = [1,11,22,33,44,55,66,77,88,99], k = 1000000000
输出:99

提示:
2 <= arr.length <= 10^5
1 <= arr[i] <= 10^6
arr 所含的整数 各不相同 。
1 <= k <= 10^9
tadeyuansuo

  • C++实现(两两比较,先固定maxn为arr的第一个元素,在经过交换之后,遇到后面比它大的元素直接令maxn = arr[i],此时最大的值便在第一个位置)最终实现效果在内存和时间方面达到了100%
class Solution {
public:
    int getWinner(vector<int>& arr, int k) {
        int count = 0,maxn = arr[0];
        for(int i = 1;i<arr.size();i++){
            if(arr[i]<maxn){
                count += 1;
            }
            else{
                if(count>=k){
                    return maxn;
                }
                count = 1;
                maxn = arr[i];
            }
        }
        return maxn;  
    }
};

你可能感兴趣的:(LeetCode,牛客网刷题,python,数据结构,算法,leetcode,数组)