IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> leetcode打卡Day1 -> 正文阅读

[数据结构与算法]leetcode打卡Day1

作者:recommend-item-box type_blog clearfix

441 排列硬币(难度:简单)

答案一:当时下意识反应想到的答案

很简单,直接循环每次需要的硬币数,一直到硬币不够为止,快三个月没写过代码,好陌生的感觉 :( 。

class Solution {
public:
    int arrangeCoins(int n) {
        int i=1;
        for(int n_temp = n; n_temp>=i; i++){
            n_temp -= i;
        }
        return i-1;
    }
};

?答案二:数列规律

随着硬币行数上涨,硬币总数应该为 1,3,6,10,15....,即 a_{n}=\left (a_{n-2} +a_{n-1} \right )?,发现之后就去复习高中数学找规律了,规律为i(i+1)/2,忽略了较大数据下int内存不够,导致错误。后面改得时候类型转换又是一顿错,啥都忘了,枯了。

class Solution {
public:
    int arrangeCoins(int n) {
        long i;
        long j;
        for(i=1,j=0;j<=(long)n;i++){
            j = i*(i+1)/2;
        }
        return (int)i-2;
    }
};

?答案三:数学求解方程,题解区找到的答案

即解方程 x(x+1)/2 = n 的解,舍弃负数解,最终结果为\frac{\sqrt{8n+1}-1}{2},结果向下取整。C++怎么开根号临时百度了。没注意int内存不够的问题,又被报了两次错。

class Solution {
public:
    int arrangeCoins(int n) {
        int i = (sqrt(8*(long)n+1)-1)/2;
        return i;
    }
};

?答案四:二分查找(这熟悉又陌生的算法名字)

有n个硬币的情况下,最少1行,最多n行(n==1)时。(在评论区找到了用移位代替除2,我怎么就全忘了呢)

class Solution {
public:
    int arrangeCoins(int n) {
        long left = 1;
        long right = n;
        long mid;
        while( right-left>1 ){
            mid = (left+right)>>1;
            if((mid*(mid+1))/2 == (long)n)
                return (int)mid;
            else if((mid*(mid+1))/2 < (long)n)
                left = mid;
            else
                right = mid;
        }
        return (right * (right + 1) == (long) 2 * n) ? (int) right : (int) left;
    }
};

?一道题做了好久,感觉这个打卡坚持不了几天了,随缘吧,不强求。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-11 17:45:19  更:2021-10-11 17:48:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:30:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码