代码编织梦想

作者:小迅

链接:https://leetcode.cn/problems/min-max-game/solutions/2063066/di-gui-zhu-shi-chao-ji-xiang-xi-by-xun-g-11zd/

来源:力扣(LeetCode)

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题目

0c7153deacfe1130ae4377f28f05967f.png

示例

565a264999eccfc1247b79bb3e46802c.png

思路

题意 -> 按照要求构造数组最后返回数组大小为 1 的数组

要求:

  • 对于满足 0 <= i < n / 2 的每个 偶数 下标 i ,将 newNums[i] 赋值 为 min(nums[2 * i], nums[2 * i + 1]) 。

  • 对于满足 0 <= i < n / 2 的每个 奇数 下标 i ,将 newNums[i] 赋值 为 max(nums[2 * i], nums[2 * i + 1]) 。

直接按照题目意思进行模拟即可,对于每一次的构造,可以使用递归进行

代码

#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define MIN(a, b) ((a) < (b) ? (a) : (b))

int minMaxGame(int* nums, int numsSize){
    if (numsSize == 1) {//递归结束
        return nums[0];
    }
    int *num = (int *)malloc(sizeof(int) * (numsSize / 2));//构造数组
    for (int i = 0; i < numsSize/2; ++i) {//枚举每一个位置
        if (i % 2 == 0) {
            num[i] = MIN(nums[2 * i], nums[2 * i + 1]);
        } else {
            num[i] = MAX(nums[2 * i], nums[2 * i + 1]);
        }
    }
    return minMaxGame(num, numsSize/2);//递归构造
}

作者:小迅
链接:https://leetcode.cn/problems/min-max-game/solutions/2063066/di-gui-zhu-shi-chao-ji-xiang-xi-by-xun-g-11zd/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_64560763/article/details/128694277

[leetcode-递归]698. 划分为k个相等的子集_qq_20398345的博客-爱代码爱编程_划分为k个相等的子集

给定一个整数数组  nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 示例 1: 输入: nums = [4, 3, 2, 3, 5, 2, 1], k = 4 输出: True 说明: 有可能将其分成 4 个子集(5),(1,4),(2,3),(2,3)等于总和。   注意: 1 <= k <

LeetCode_Array_128. Longest Consecutive Sequence最长连续序列(C++)【并查集】-爱代码爱编程

目录 1,题目描述 英文描述 中文描述 2,解题思路 第一博(set中元素递增) 第二搏(剪枝,每次都挑选一个完全新的开始元素x【不存在x-1】开始查找) 第三搏(并查集) 3,AC代码 第一博 第二搏 第三搏 4,解题过程 第一博 第二搏 第三搏 1,题目描述 英文描述 Given an unsorted arr

【递归】 LeetCode473. 火柴拼正方形-爱代码爱编程

题目 解答 回溯法的求解过程实质上是一个先序遍历一棵状态树的过程,只是这棵树不是遍历前预先建立的,而是隐含在遍历的过程中。 递归题的解法:首先把题目的决策树画出来,树的层就是for循环,树的深度就是要递归的参数i。画出决策树后,找规律,进行剪枝。 E.g. 输入【1, 1, 2, 2, 2】 放小球问题,总共四个盒子,每个

python二维游戏编程 最强大脑游戏_leetcode 第877题 石子游戏 python解法(用时420ms)...-爱代码爱编程

leetcode 第877题 石子游戏 python解法(用时420ms) 该题是典型的双人回合制博弈游戏,两个人轮流从石子堆中拿出石子,其中石子都是按行一行行排好的,每个回合只能从头或者尾拿出一行石子。石子排列的行数是偶数,而且石子的总数是奇数,这样说明到最后不会出现平局。 问题分析 动态规划 这题本意是要求使用动态规划,动态规划最重要的是要

Leetcode每日好多题:排序算法+字符串相关问题-爱代码爱编程

目录 第一章 红黑树和AVL树第二章 排序算法1、简单的排序冒泡排序选择排序插入排序希尔排序2、高级排序快速排序归并排序3、Leetcode 1122:数组的相对排序4、Leetcode 242:有效的字母异位词5、Leetcode 1244:力扣排行榜6、Leetcode 56:合并区间7、剑指Offer 51 数组中的逆序对8、Leetcode

Leetcode 375. 猜数字大小 II (动态规划极小化极大值思想)-爱代码爱编程

用f(i,j)表示i到j数之间的最少金额 f(i, j) =min(k + max(f[i, k - 1), f(k + 1, j)] 用Python记忆话递归写法: class Solution: def getMoneyAmount(self, n: int) -> int: @lru_cache(None)

【leetcode每日一题:2293. 极大极小游戏~~~模拟+递归】-爱代码爱编程

题目描述 给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。 对 nums 执行下述算法: 设 n 等于 nums 的长度,如果 n == 1 ,终止 算法过程。否则,创建 一个新的整数数组 newN

leetcode 2293. 极大极小游戏-爱代码爱编程

Leetcode 2293. 极大极小游戏 一、题目内容和对应链接1.题目对应链接2.题目内容 二、我的想法三、其他人的题解 一、题目内容和对应链接 1.题目对应链接 Leetcode 2293. 极大

记录每日leetcode 2293.极大极小游戏 java实现-爱代码爱编程

题目描述: 给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。 对 nums 执行下述算法:     设 n 等于 nums 的长度,如果 n == 1 ,终止 算法过程。否则,创建 一个新的整数数组 newNums ,新数组长度为 n / 2 ,下标从 0 开始。     对于满足 0 <= i < n / 2

【每日一题day88】lc2293极大极小游戏 | 模拟 递归-爱代码爱编程

极大极小游戏【LC2293】 You are given a 0-indexed integer array nums whose length is a power of 2. Apply the follow

【力扣题解】6090. 极大极小游戏-爱代码爱编程

😊博主目前也在学习,有错误欢迎指正😊 🌈保持热爱 奔赴星海🌈 文章目录 一、题目1、题目描述2、基础框架3、原题链接 二、解题报告1、思路分析2、代码详解 三、本题知识