首页 > 其他分享 >力扣2293 暴力模拟

力扣2293 暴力模拟

时间:2023-11-11 10:38:24浏览次数:38  
标签:newNums 下标 暴力 nums 2293 力扣 int 算法 数组

2293. 极大极小游戏

给你一个下标从 0 开始的整数数组 nums ,其长度是 2 的幂。

对 nums 执行下述算法:

  1. 设 n 等于 nums 的长度,如果 n == 1 ,终止 算法过程。否则,创建 一个新的整数数组 newNums ,新数组长度为 n / 2 ,下标从 0 开始。
  2. 对于满足 0 <= i < n / 2 的每个 偶数 下标 i ,将 newNums[i] 赋值 为 min(nums[2 * i], nums[2 * i + 1]) 。
  3. 对于满足 0 <= i < n / 2 的每个 奇数 下标 i ,将 newNums[i] 赋值 为 max(nums[2 * i], nums[2 * i + 1]) 。
  4. 用 newNums 替换 nums 。
  5. 从步骤 1 开始 重复 整个过程。

执行算法后,返回 nums 中剩下的那个数字。

class Solution {
public:
    int n_f(int n,int m){
        int i=0;
        for(;;i++){
            if(pow(n,i)==m)break;
        }
        return i;
    }
    int minMaxGame(vector<int>& nums) {
        int n=nums.size();
        if(n==1)return nums[0];
        int j=n_f(2,n);
        while(j>=1){
            for(int i=0;2*i<pow(2,j);i++){
                if(i%2==0){
                    nums[i]=min(nums[2*i],nums[2*i+1]);
                }else{
                    nums[i]=max(nums[2*i],nums[2*i+1]);
                }
            }
            j--;
        }
        return nums[0];
        
    }
};

 

标签:newNums,下标,暴力,nums,2293,力扣,int,算法,数组
From: https://blog.51cto.com/u_15974747/8314112

相关文章

  • Vue源码学习(十六):diff算法(三)暴力比对
    好家伙,这是diff的最后一节了 0.暴力比对的使用场景 没有可复用的节点:当新旧虚拟DOM的结构完全不同,或者某个节点不能被复用时,需要通过暴力比对来创建新的节点,并在真实DOM上进行相应的插入操作。0.1.例子一://创建vnodeletvm1=newVue({data:{name:'张三'......
  • 力扣2406. 将区间分为最少组数
    给你一个二维整数数组 intervals ,其中 intervals[i]=[lefti,righti] 表示 闭 区间 [lefti,righti] 。你需要将 intervals 划分为一个或者多个区间 组 ,每个区间 只 属于一个组,且同一个组中任意两个区间 不相交 。请你返回 最少 需要划分成多少个组。如果......
  • 力扣466
     定义str=[s,n]表示str由n个字符串s连接构成。例如,str==["abc",3]=="abcabcabc"。如果可以从s2 中删除某些字符使其变为s1,则称字符串s1 可以从字符串s2获得。例如,根据定义,s1="abc"可以从s2="abdbec"获得,仅需要删除加粗且用斜体标识的字符......
  • 算法day1数组|力扣704二分查找,27移除元素
    数组基础理论数组是存放在连续内存空间上的相同类型数据的集合。可以通过下标轻松获取数据,但是增删元素的时候需要移动其他元素Vector和array的区别vector的底层实现是array,但是vector是容器不是数组数组的元素不能删除,只能覆盖小技巧:取中间intmid=l+r>>1;//有时候怕溢......
  • 力扣2149 暴力+另建两个vector<int>
    2149. 按符号重排数组解题思路另建两个容器,分别存储正负整数,然后依次正负相间放入numsclassSolution{public:vector<int>rearrangeArray(vector<int>&nums){intn=nums.size(),j=1;vector<int>a,b;for(autoi:nums){if(i<0)b.......
  • 力扣练习题
    1、week31.1、有效的括号20-有效的括号publicbooleanisValid(Strings){Deque<Character>stack=newDeque<>();char[]chars=s.toCharArray();for(charc:chars){if(c=='('||c=='['||c=='{&#......
  • 力扣2562 采用双指针
    2562. 找出数组的串联值classSolution{public://返回两数串联后的值longlongis(intm,intn){longlongans=n;inti=0;while(n){n/=10;i++;}returnans+m*pow(10,i);}longlon......
  • 客户案例:CAC2.0监测异常账号行为,缓解暴力破解攻击
    客户背景某IT互联网公司专注于高精度导航定位技术的研发、制造和产业化推广,是国内高精度导航定位产业的领先企业之一。该公司以上海为总部,旗下拥有20+国内省级本地化服务机构,并且其业务覆盖海外市场,公司产品和解决方案在不同领域和行业均取得显著的成就。问题需求通过与该公司管理......
  • 力扣1370 直接模拟
    1370. 上升下降字符串按照题目模拟创建了一个长度为26的数组来存放字母数量kk是结果res的实时长度,cs是第几次(来决定添加最小的还是添加最大的)classSolution{public:stringsortString(strings){stringres;intarr[26]={0};intsize=26;......
  • cf797eE. Array Queries(暴力+复杂度分析)
    cf797e还是暴力,将不同的询问根据k分开,然后bfs,建出一棵树,然后dfs。时间复杂度:O(能过)稍微口胡分析一下大概是\(min(1,q[1])*n/1+min(2.q[2])*n/2+min(3,q[3])*n/3+.....\)qi表示第k=i的询问个数因为每一种k它最多将所有的a分成k类,如果全部满了,就是n,那么显然是尽量分配给前面......