首页 > 其他分享 >1040. 移动石子直到连续 II

1040. 移动石子直到连续 II

时间:2023-04-15 18:34:09浏览次数:48  
标签:stones cnt 1040 move int max 复杂度 石子 II

题目链接:1040. 移动石子直到连续 II

方法:找规律

解题思路

参考—【图解】下跳棋

代码

class Solution {
public:
    vector<int> numMovesStonesII(vector<int>& stones) {
        sort(stones.begin(), stones.end());
        int n = stones.size();
        int e1 = stones[n - 1] - stones[1] - n + 2;
        int e2 = stones[n - 2] - stones[0] - n + 2;
        int max_move = max(e1, e2);
        if (!e1 || !e2) {
            return {min(2, max_move), max_move};
        }
        int l = 0, max_cnt = 0;
        for (int r = 0; r < n; r ++ ) {
            while (stones[r] - stones[l] + 1 > n) l ++ ;
            max_cnt = max(max_cnt, r - l + 1);
        }
        return {n - max_cnt, max_move};
    }
};

复杂度分析

时间复杂度:\(O(nlogn)\);
空间复杂度:\(O(logn)\),主要为排序时栈开销。

标签:stones,cnt,1040,move,int,max,复杂度,石子,II
From: https://www.cnblogs.com/lxycoding/p/17321604.html

相关文章

  • 47. 全排列 II
    给定一个可包含重复数字的序列nums,按任意顺序返回所有不重复的全排列。输入:nums=[1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]>我的解法classSolution{private:voidtraversal(vector<int>&nums,vector<bool>&used,intstartdex){if(startdex>nums......
  • 90. 子集 II
    给你一个整数数组nums,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。返回的解集中,子集可以按任意顺序排列。>我的解法classSolution{private:voidtraversal(vector<int>&nums,vector<bool>&used,intstartdex){i......
  • (动态规划)剑指 Offer 14- II. 剪绳子 II
    题目描述:给你一根长度为n的绳子,请把绳子剪成整数长度的m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1]...k[m-1]。请问k[0]*k[1]*...*k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案......
  • 40. 组合总和 II
    给定一个候选人编号的集合candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。classSolution{private:voidtraversal(vector<int>&candidates,......
  • winform-C#操作IIS_DirectoryEntry
    1、创建对象:DirectoryEntryrootfolder=newDirectoryEntry("IIS://localhost/W3SVC/1/ROOT"); //IIS://服务器的名字/要操作的Web服务器类型/站点/站点的虚拟目录 2、修改对象: 3、删除对象: 参考:   C#创建虚拟目录  C#使用DirectoryEntry操作IIS创建网站......
  • leetcode:路径总和 III
    问题描述给定一个二叉树的根节点root ,和一个整数targetSum,求该二叉树里节点值之和等于targetSum的路径的数目。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例1输入:root=[10,5,-3,3,2,null,11,3,-2,null,1],ta......
  • SPOJ 1825 FTOUR2 - Free tour II (树上点分治)
    题目地址:SPOJ1825树分治的题果然除了模板题就是金牌题啊。。。这题是一道论文题,想了好长时间。。。。终于过了,,,,注意一个坑点,如果权值全部为负的话,是可以不选任意一条边的,这样权值为0。。。也就是说初始值要设为0。。。具体看漆子超的论文《分治算法在树的路径问题中的应用》......
  • HDU 5016 Mart Master II (树上点分治)
    题目地址:HDU5016先两遍DFS预处理出每个点距最近的基站的距离与基站的编号。然后找重心,求出每个点距重心的距离,然后根据dis[x]+dis[y]<d[y],用二分找出当前子树中不会被占领的数量,总点数减去即是被占领的数量。这样就可以求出每个点最多占领的点的数量。然后找最大值即可。......
  • 动态规划02——45. 跳跃游戏 II
    45.跳跃游戏II给定一个长度为n的0索引整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向前跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意nums[i+j]处:0<=j<=nums[i] i+j<n返回到达 nums[n-1]的最小跳跃次数......
  • Ethernet II Frame 协议格式
    以太网帧有多种标准,每个标准有细微区别。最常见的是EthernetII标准,除此之外还有NovellrawIEEE802.3|IEEE802.2LLC|IEEE802.2SNAP。帧头格式DestMACSrcMACEthernetTypeDataCRC6bytes6bytes2bytes46-1500bytes4bytesDestMAC目标MAC地址,MAC......