首页 > 其他分享 >leedcode-排列硬币

leedcode-排列硬币

时间:2024-04-30 15:14:04浏览次数:15  
标签:排列 硬币 int mid leedcode right math left

自己写的:

import math

class Solution:
    def arrangeCoins(self, n: int) -> int:
        # 计算判别式
        discriminant = 1 + 8 * n

        # 计算根
        root1 = (-1 + math.sqrt(discriminant)) / 2

        # 返回地板取整后的根
        return math.floor(root1)

二分法:

class Solution {
    public int arrangeCoins(int n) {
        long left = 1, right = n;
        
        while (left < right) {
            long mid = left + (right - left + 1) / 2;
            
            // 如果 mid 行硬币总数不超过 n,则将左边界移动到 mid,否则将右边界移动到 mid - 1
            if (mid * (mid + 1) / 2 <= n) {
                left = mid;
            } else {
                right = mid - 1;
            }
        }
        
        // 最终 right 就是最大可放置硬币的阶梯行数
        return (int) right;
    }
}

 

标签:排列,硬币,int,mid,leedcode,right,math,left
From: https://www.cnblogs.com/yyyjw/p/18168038

相关文章

  • 重新排列数组
    给你一个数组nums,数组中有2n个元素,按[x1,x2,...,xn,y1,y2,...,yn]的格式排列。请你将数组按[x1,y1,x2,y2,...,xn,yn]格式重新排列,返回重排后的数组。我写的:  publicint[]Shuffle(int[]nums,intn){      int[]newNums=newint[2*n];  ......
  • TODO-力扣-46. 全排列
    1.题目题目地址(46.全排列-力扣(LeetCode))https://leetcode.cn/problems/permutations/题目描述给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。 示例1:输入:nums=[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,......
  • leedcode-字符串中的单词数
    classSolution:defcountSegments(self,s:str)->int:n=len(s)#如果字符串长度为1且不是空格,则只有一个段ifn==1ands[0]!='':return1#如果字符串长度为1且是空格,则没有段ifn==1ands[0]==......
  • leedcode-
    自己写的:classSolution:defaddStrings(self,num1:str,num2:str)->str:#将两个字符串转换为整数num1_int=self.strToInt(num1)num2_int=self.strToInt(num2)#将两个整数相加,并将结果转换为字符串res=......
  • leedcode-第三大的数
    自己写的,用时很长fromtypingimportListclassSolution:defthirdMax(self,nums:List[int])->int:#计算输入列表的长度n=len(nums)#对列表进行冒泡排序,将较大的元素排在前面foriinrange(n-1):forjinra......
  • leedcode-
    自己写的fromtypingimportListclassSolution:deffizzBuzz(self,n:int)->List[str]:#初始化结果列表res=[]#FizzBuzz对应的字符串列表myli=["Fizz","Buzz","FizzBuzz"]#遍历1到......
  • leedcode-最长回文串
    自己写的:classSolution:deflongestPalindrome(self,s:str)->int:count=0#用于计算最长回文串的长度hash={}#用于统计每个字符出现的次数的字典#统计每个字符出现的次数foriins:ifnothash.get(i):......
  • 让两个按钮左右排列
    要让两个按钮左右排列,你可以使用Bootstrap的网格系统将它们放置在同一行中。你可以将按钮放置在两个col中,分别占据一定的列宽。以下是你的模板代码做出的修改:{%extends'base.html'%}{%blockcontent%}<divclass="containermt-4"><h1>确认退回任务</h1><p......
  • leedcode-数字转换为十六进制数
    自己写的,先整数转二进制,再切片二进制转16进制classSolution:deftoHex(self,num:int)->str:#处理特殊情况:当num为0时,直接返回'0'ifnum==0:return'0'#定义十六进制字母的映射关系my_dict={10:......
  • leedcode-左叶子之和
    自己写的,使用了经典的广度优先搜素(BFS):classSolution:defsumOfLeftLeaves(self,root:Optional[TreeNode])->int:#初始化队列,将根节点放入队列中queue=[root]#初始化结果变量res=0#遍历队列,直到队列为空......