【一刷《剑指Offer》】面试题 46:求 1+2+...+n

news2024/9/21 23:22:48

力扣对应题目链接:LCR 189. 设计机械累加器 - 力扣(LeetCode)

牛客对应题目链接:求1+2+3+...+n_牛客题霸_牛客网 (nowcoder.com)


一、《剑指Offer》对应内容


二、分析题目

通常实现递归的时候我们都会利用条件判断语句来决定递归的出口,但由于题目的限制我们不能使用条件判断语句,那么我们就要选择使用别的办法来确定递归出口 —— 逻辑运算符的短路性质。

构造函数:这通过 Temp 类模拟一个累加器,每创建一个 Temp 对象,就将静态成员变量 N 的值累加到 sum 中。在 Solution 类中,通过 mechanicalAccumulator 方法控制累加器的行为:首先重置累加器的状态,然后创建一定数量的 Temp 对象,最后返回累加器累计的结果。也就是每创建一个 Temp 对象,N 就增加 1,然后再将 N 的值加到 sum 中。

上面书中讲到的第四种方法在这里无法实现,因为题目的 n 是动态的,所以无法使用模板类型求解。


三、代码

//力扣
//方法一-递归
class Solution {
public:
    int mechanicalAccumulator(int target) {
        return target==0?0:target+mechanicalAccumulator(target-1);
    }
};

//方法二-构造函数
class Temp {
public:
    Temp()
    {
        N++;
        sum+=N;
    }
    static int getSum()
    {
        return sum;
    }
    static void Reset()
    {
        N=0;
        sum=0;
    }
private:
    static int N;
    static int sum;
};

int Temp::N=0;
int Temp::sum=0;

class Solution {
public:
    int mechanicalAccumulator(int target) {
        Temp::Reset();
        Temp* a=new Temp[target];
        delete[] a;
        a=nullptr;
        return Temp::getSum();
    }
};

//方法三-虚函数
class A;
A* Array[2];

class A {
public:
    virtual int sum(int target)
    {
        return 0;
    }
};

class B : public A {
public:
    virtual int sum(int target)
    {
        return Array[!!target]->sum(target-1)+target;
    }
};

class Solution {
public:
    int mechanicalAccumulator(int target) {
        A a;
        B b;
        Array[0]=&a;
        Array[1]=&b;
        return Array[1]->sum(target);
    }
};
//牛客
int i = 1;
int sum = 0;
class Sum
{
public:
    Sum()
    {
        sum += i;
        ++i;
    }
};

class Solution {
public:
    int Sum_Solution(int n) {
        Sum a[n];
        return sum;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1938909.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机体系结构||Cache性能分析(4)

实验4 Cache性能分析 4.1实验目的 (1)加深对Cache基本概念、基本组织结构以及工作原理的理解。 (2)掌握Cache容量、相关度、块大小对Cache性能的影响 (3)掌握降低Cache不命中率的各种方法以及它们对提高…

初识网络基础知识

关于网络的一些核心概念 局域网 局域网(Local Area Network,简称LAN)是一种计算机网络,覆盖的范围通常是相对较小的地理区域,比如一个办公室、一栋大楼或一个校园。 局域网的组成通常包括以下部分: 网络…

Docker Desktop Windows 目录介绍

D:\docker\DockerDesktopWSL\main\ext4.vhdx 和 D:\docker\DockerDesktopWSL\data\ext4.vhdx 是 Docker Desktop 在 Windows Subsystem for Linux(WSL)中使用的虚拟硬盘文件,它们有不同的用途和作用。 虚拟硬盘文件(VHDX&#xf…

生成式多模态之AE DAE/MAE VAE VQ-VAE/VQ-VAE2

目录 1. AE2. DAE/MAE3. VAE4. VQ-VAE/VQ-VAE2生成式多模态发展主要历程 年份1月2月3月4月5月6月7月8月9月10月11月2020DETRDDPMDDIM、VisionTransformer2021CLIP、DALLESwin Transformer2022BLIPDALLE 2StableDiffusion、BEiT-3、Midjourney V32023BLIP2VisualChatGPT、Midjou…

linux内核中list的基本用法

内核链表 1 list_head 结构 为了使用链表机制&#xff0c;驱动程序需要包含<linux/types.h>头文件&#xff0c;该文件定义了如下结构体实现双向链&#xff1a; struct list_head {struct list_head *next, *prev; };2 链表的初始化 2.1 链表宏定义和初始化 可使用以…

AES算法概述

文章目录 一、AES 概述二、AES 加密算法的特点三、秘钥类型四、填充方式五、加密方式 一、AES 概述 二、AES 加密算法的特点 AES加密的数据块长度为128&#xff08;16字节&#xff09;&#xff0c;长度不足需要填充。密码长度可以为16,24,32字节。 三、秘钥类型 AES加密按秘…

【科大讯飞笔试题汇总】2024-07-20-科大讯飞秋招提前批(算法岗)-三语言题解(Cpp/Java/Python)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f4e7; 清隆这边最…

基于java+springboot+vue实现的企业OA管理系统(文末源码+Lw)131

基于SpringBootVue的实现的企业OA管理系统&#xff08;源码数据库万字Lun文流程图ER图结构图演示视频软件包&#xff09; 系统功能&#xff1a; 企业OA管理系统有管理员和用户。 管理员功能有个人中心&#xff0c;用户管理&#xff0c;公告信息管理&#xff0c;客户关系管理&…

【nnUNet V2系列】nnUNet V2在Ubuntu下安装调试篇

安装之前网上很多教程&#xff0c;很多是nnUNet V1的安装过程&#xff0c;有的V1和V2混在一起讲解&#xff0c;导致V1的转化指令用到V2中&#xff0c;产生不少误解。这篇是针对V2整理出来的安装过程&#xff0c;有什么不妥之处请指出会及时修改。 1. 创建虚拟环境 conda crea…

某4G区域终端有时驻留弱信号小区分析

这些区域其实是长时间处于连接态的电信卡4G终端更容易出现。 出现问题时都是band1 100频点下发了针对弱信号的1650频点的连接态A4测量事件配置&#xff08;其阈值为-106&#xff09;。而这个条件很容易满足&#xff0c;一旦下发就会切到band3 1650频点。 而1650频点虽然下发ban…

Visual Studio 2022美化

说明&#xff1a; VS版本&#xff1a;Visual Studio Community 2022 背景美化 【扩展】【管理扩展】搜索“ClaudiaIDE”&#xff0c;【下载】&#xff0c;安装完扩展要重启VS 在wallhaven下载壁纸图片作为文本编辑器区域背景图片 【工具】【选项】搜索ClaudiaIDE&#xff…

手机数据恢复技巧:适用于 Android 的恢复应用程序

发现自己意外删除了 Android 设备上的照片&#xff0c;这让人很痛苦。这些照片可能是值得纪念的文件&#xff0c;会让您想起一些难忘的回忆。删除它们后&#xff0c;您知道如何恢复它们。在这种情况下&#xff0c;您需要使用 Android 的照片恢复应用程序。 无论您需要直接从 A…

git跨库合并

1、背景 A为开发环境的代码仓库&#xff0c;B为生产环境的代码仓库。A和B之间不能通信。开发人员的本地电脑可以和A、B通信。 目的 上线时&#xff0c;需要将A代码合并B代码。 2、实现 2.1 添加远程仓库 2.1.1 代码方式 在B代码仓库中,将A添加为远程仓库。 git remote …

腾讯会议产品策划的成长之路:从万字文档到功能落地的实战经验

腾讯会议产品策划的成长之路&#xff1a;从万字文档到功能落地的实战经验 在腾讯会议的产品团队中&#xff0c;有这样一位产品策划&#xff0c;他以其出色的逻辑思维、全局观念以及扎实的执行力&#xff0c;在团队中发挥着举足轻重的作用。他就是林陪同&#xff0c;一个自称“会…

抽奖算法的设计与实现

更多内容欢迎访问我的个人博客网站&#xff1a;www.zpf0000.com 在数据库中准备好以下数据表 lottery表 sql代码解读复制代码 DROP TABLE IF EXISTS lottery; CREATE TABLE lottery (id int NOT NULL AUTO_INCREMENT,user_id int NOT NULL DEFAULT 0 COMMENT 发起抽奖用户ID,n…

【MySQL】:对库和表的基本操作方法

数据库使用的介绍 什么是SQL 学习数据库的使用——>基于 SQL编程语言 来对数据库进行操作 重点表述的是“需求”&#xff0c;期望得到什么结果。&#xff08;至于结果是如何得到的&#xff0c;并不关键&#xff0c;都是数据库服务器在背后做好了&#xff09; 重点表述的是…

DEGAS:将临床属性转移到细胞

DEGAS&#xff08;单细胞诊断证据量表&#xff0c;Diagnostic Evidence GAuge of Single cells&#xff09;是一种迁移学习框架&#xff0c;用于将疾病信息从患者转移到细胞。作者将这种可转移信息称为“印象-impressions”&#xff0c;它允许单细胞与疾病属性相关联&#xff0…

【Python】使用库 -- 详解

库就是别人已经写好了的代码&#xff0c;可以让我们直接拿来用。 一个编程语言能不能流行起来&#xff0c;一方面取决于语法是否简单方便容易学习&#xff0c;一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库&#xff0c;来应对各种各样的场景。在…

动态路由协议 —— EIGRP 与 OSPF 的区别

EIGRP&#xff08;增强内部网关路由协议&#xff09;和 OSPF&#xff08;开放式最短路径优先&#xff09;是两种最常见的动态路由协议&#xff0c;主要是用来指定路由器或交换机之间如何通信。将其应用于不同的情况下&#xff0c;可提高速率、延迟等方面的性能。那么它们之间到…

【Python系列】Python 缓存机制

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…