首页 > 其他分享 >441. 排列硬币

441. 排列硬币

时间:2023-12-19 15:33:08浏览次数:22  
标签:二分 排列 硬币 441 mid long check

441. 排列硬币

你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。

给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。

二分答案

本题为一个还算简单的二分答案,我对二分答案的理解是:
我们需要用二分搜索去找到一个数,而这个数要符合其他要求,这个要求就是check函数的功能,也就是答案。
要找的是可以形成完整一行的,所以向下取整。

class Solution {
public:
    bool check(long long m,long long n){
        long long sum=(m*(m+1))>>1;
        if(sum<=n)return 1;
        else return 0;
    }
    int arrangeCoins(int n) {
        long long l=1,r=1e9;
        while(l<r){
            long long mid=(l+r+1)>>1;
            if(check(mid,n))l=mid;
            else r=mid-1;
        }
        return r;
    }
};

标签:二分,排列,硬币,441,mid,long,check
From: https://www.cnblogs.com/isomer/p/17913852.html

相关文章

  • 4412 设备树 没有eth0 没有加载 dm9621 驱动。
    问题: 在4412的板卡上烧写完,设备树的镜像之后,系统启动之后,发现没有网络。 这种情况,在从新烧写一遍镜像就可以了,具体原因不清楚,可能跟设备树的uboot的烧写命令有关。  总结:4412 8G以及16Gemmc的核心板在设备树的镜像上网络上都是可以的,主要就是需要多烧......
  • 硬币找钱问题
    硬币找钱如题:思路:从最大币值入手include<stdio.h>intmain(){inta[6]={5,10,20,50,100,200};//币值,以分为单位intb[6];//存放对应硬币的个数intn;scanf("%d",&n);//输入n组测试数据while(n--){intj;//读取每种硬币的个数for(j......
  • 【教3妹学编程-算法题】需要添加的硬币的最小数量
    3妹:2哥2哥,你有没有看到新闻,有人中了2.2亿彩票大奖!2哥 :看到了,2.2亿啊,一生一世也花不完。3妹:为啥我就中不了呢,不开心呀不开心。2哥 :得了吧,你又不买彩票,还是脚踏实地的好~3妹:小富靠勤,中富靠德,大富靠命,可能是我命不好。2哥 :哎,想我口袋只有几个硬币,叮咚作响。3妹:说到硬币,我......
  • leet code 567. 字符串的排列
    567.字符串的排列题目描述给你两个字符串s1和s2,写一个函数来判断s2是否包含s1的排列。如果是,返回true;否则,返回false。换句话说,s1的排列之一是s2的子串。示例1:输入:s1="ab"s2="eidbaooo"输出:true解释:s2包含s1的排列之一("ba")示例2:输入:s1="ab"s2="......
  • LeetCode567. 字符串的排列
    题目描述思路:滑动窗口模板定义需要维护的变量Map<Character,Integer>map=newHashMap<>();Map<Character,Integer>map_s1=newHashMap<>();for(charc:s1.toCharArray()){ map_s1.put(c,map_s1.getOrDefault(c,0)+1);}根据题意可知:窗口为固定大小所......
  • AcWing 842. 排列数字 && AcWing 843. n-皇后问题
    842.排列数字(全排列)题面:给定一个整数\(n\),将数字\(1∼n\)排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。#include<iostream>usingnamespacestd;constintN=10;intpath[N];//保存序列boolst[N];//数字是否被用过,bool类型的全局变......
  • 【DFS深度优先算法】全排列、组合总和
    全排列题目描述:给定一个没有重复数字的序列,返回其所有可能的全排列。题目链接:46.全排列输入描述:输入:[1,2,3]输出描述:输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]思路:依次从前往后把所有数字,固定在第0个位置,此时再从前往后把剩余数字依次固定在第1个位置,如此......
  • C# Lambda 分组排序问题(先对数据进行时间倒序排列,然后再按照某字符分组,在每个分组内再
    问题:先对数据进行时间倒序排列,然后再按照某字符分组,在每个分组内再按照某数字或字符正序排列解答:vardata=list.OrderByDescending(i=>i.Date).ToList();vargData=data.GroupBy(g=>g.code).Select(l=>l.OrderBy(i=>i.Step));varinvData=newList<IndexVM>();fore......
  • 为什么全序集降位和和逆序对在同一长度的排列的分布相同?
    引入在q-analog中,我们知道:\[\sum_{p\inS}q^{\operatorname{maj}(p)}=\sum_{p\inS}q^{\tau(p)}=\binom{\suma_i}{a_1,a_2,\dots,a_n}_q\]其中\(S\)是\(a_i\)个\(i\)元素(对于所有\(i\))构成的排列集合。\[\operatorname{maj}(p)=\sum_{i<\suma_i}i[p_i>p......
  • 排列组合学习笔记
    加法原理有\(n\)类办法,\(a_i(1\lei\len)\)代表第\(i\)类方法的数目。那么共有\(S=a_1+a_2+\cdots+a_n\)种方法乘法原理分\(n\)个步骤,\(a_i(1\lei\len)\)代表第\(i\)个步骤的方法数目。那么共有\(S=a_1\timesa_2\times\cdots\timesa_n\)种方法排列数从\(n\)个......