【刷题】牛客 JZ64 求1+2+3+...+n

在这里插入图片描述

刷题

  • 题目描述
  • 思路一 (暴力递归版)
  • 思路二 (妙用内存版)
  • 思路三 (快速乘法版)
  • 思路四 (构造巧解版)
  • Thanks♪(・ω・)ノ谢谢阅读!!!
  • 下一篇文章见!!!

题目描述

在这里插入图片描述
根据题目描述 ,会有两个主要难点 : 1 如何控制遍历,2 如何计算。
因为我们不能使用for while if else switch case等关键字,对于如何实现1 到 n 的遍历就显得十分困难。对此想出的策略有类构造函数,递归两种办法。如何计算注意规避掉公式法就好。

思路一 (暴力递归版)

首先我们想到使用递归来实现:我们遇到的首要问题就是如何成功遍历:递归不难,但是如何保证遍历范围是 1 到 n 呢。这里使用短路处理
在函数中,如果 与运算 成立,则继续,否则终止函数直接返回false。

class Solution {
public:int Sum_Solution(int n) {//只有 与运算 返回true 才会继续进行 模拟短路//保证 n 大于 0n && (n+=Sum_Solution(n - 1));return n ;}
};

来看运行效果:
在这里插入图片描述
成功运行!!! 过啦!!!

思路二 (妙用内存版)

虽然我们无法使用乘法运算,但是我们可以利用程序内部进行的运算,比如开辟二维空间就可以模拟二阶乘法,三维数组可以模拟三阶乘法。所以原理非常简单,开辟一个 n * (n+1) 的二维数组 然后 通过位运算 得到一半即可。

class Solution {
public:int Sum_Solution(int n) {char add[n][n+1];return (sizeof(add) >> 1);}
};

在这里插入图片描述
顺利运行!!!这种思路我愿称之为最美

思路三 (快速乘法版)

这道题也可以使用快速乘法来解决。
快速乘法的思路很简单

  1. 把其中一个乘数 a 转换为二进制
  2. 把每一位都与 另一个乘数 b 相乘 并 乘以 相应阶数
  3. 把每次结果加入 结果 中
    我们先用while写一个通用版本,这道题只需在200以内就可以,即11位
//通用版本
class Solution {
public:int Sum_Solution(int n) {int a = n ;int b = n + 1;int sum = 0;int level = 1;while(b){int i = b & 1;if(i) sum += a * level;b = b >> 1;level *= 2;}return sum / 2;}
};

题目适配版

class Solution {
public:int Sum_Solution(int n) {int a = n ;int b = n + 1;int sum = 0;int level = 1;int i = b & 1;if(i) sum += a * level;b >>= 1;level <<= 1;i = b & 1;if(i) sum += a * level;b >>= 1;level <<= 1;i = b & 1;if(i) sum += a * level;b >>= 1;level <<= 1;i = b & 1;if(i) sum += a * level;b >>= 1;level <<= 1;i = b & 1;if(i) sum += a * level;b >>= 1;level <<= 1;i = b & 1;if(i) sum += a * level;b >>= 1;level <<= 1;i = b & 1;if(i) sum += a * level;b >>= 1;level <<= 1;i = b & 1;if(i) sum += a * level;b >>= 1;level <<= 1;i = b & 1;if(i) sum += a * level;b >>= 1;level <<= 1;i = b & 1;if(i) sum += a * level;b >>= 1;level <<= 1;               return sum / 2;}
};

来看效果:
在这里插入图片描述
过啦!!!

思路四 (构造巧解版)

我们可以通过构造一个类 ,然后创建一个类数组,就会使用 n 次 构造函数,这里就可以帮助我们解决无法使用关键字的问题。
注意使用静态成员变量,帮助成功完成遍历求和。

#include <type_traits>
class add{public:add(){i+=j;j++;}static int i,j;};
int add::i = 0;int add:: j = 1;
class Solution {
public:int Sum_Solution(int n) {add sum[n];return add::i;}
};

来看效果:
在这里插入图片描述
过啦!!!!!!!!!!!!!

Thanks♪(・ω・)ノ谢谢阅读!!!

下一篇文章见!!!

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

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

相关文章

高盛:日本这轮通胀是否可持续,关键看房租

租金在日本CPI中的权重高达20%&#xff0c;高盛预计短期内租金将继续拖累通胀至1.7%或以下&#xff0c;长期有望温和上行&#xff0c;使通胀稳在2%的水平。 日本正在转向“去通缩”&#xff0c;房租能否支撑通胀态势&#xff1f; 在日股今年一路高歌、有望“收复失地”时&…

unity-firebase-Analytics分析库对接后数据不显示原因,及最终解决方法

自己记录一下unity对接了 FirebaseAnalytics.unitypackage&#xff08;基于 firebase_unity_sdk_10.3.0 版本&#xff09; 库后&#xff0c;数据不显示的原因及最终显示解决方法&#xff1a; 1. 代码问题&#xff08;有可能是代码写的问题&#xff0c;正确的代码如下&#xff…

OpenTiny Vue 组件库适配微前端可能遇到的4个问题

本文由体验技术团队 TinyVue 项目成员岑灌铭同学创作。 前言 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略&#xff0c;每个应用可以选择不同的技术栈&#xff0c;独立开发、独立部署。 TinyVue组件库的跨技术栈能力与微前端十…

springboot207基于springboot的实习管理系统

实习管理系统的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定实习管理系统的总体功…

H5星空渐变效果引导页源码

H5星空渐变效果引导页源码 源码介绍&#xff1a;H5星空渐变效果引导页源码是一款带有星空渐变效果的源码&#xff0c;内含3个可跳转旗下站点按钮。 下载地址&#xff1a; https://www.changyouzuhao.cn/8344.html

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】时间复杂度 | 空间复杂度

目录 1 -> 算法效率 1.1 -> 如何衡量一个算法的好坏&#xff1f; 1.2 -> 算法的复杂度 2 -> 时间复杂度 2.1 -> 时间复杂度的概念 2.2 -> 大O的渐进表示法 2.3 -> 常见时间复杂度计算 3 -> 空间复杂度 4 -> 常见复杂度对比 1 -> 算法效…

SQL注入漏洞解析

什么是SQL注入 原理&#xff1a; SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理员不知情的情况下实现非法操作&#xff0c;以此来实现欺骗数据库服…

【Vuforia+Unity】AR01实现单张多张图片识别产生对应数字内容

1.官网注册 Home | Engine Developer Portal 2.下载插件SDK&#xff0c;导入Unity 3.官网创建数据库上传图片&#xff0c;官网处理成数据 下载好导入Unity&#xff01; 下载好导入Unity&#xff01; 下载好导入Unity&#xff01; 下载好导入Unity&#xff01; 4.在Unity设…

图——最小生成树实现(Kruskal算法,prime算法)

目录 预备知识&#xff1a; 最小生成树概念&#xff1a; Kruskal算法&#xff1a; 代码实现如下&#xff1a; 测试&#xff1a; Prime算法 &#xff1a; 代码实现如下&#xff1a; 测试&#xff1a; 结语&#xff1a; 预备知识&#xff1a; 连通图&#xff1a;在无向图…

Sora的第一波受害者出现了。

不知道大家最近除了被Sora刷屏之外&#xff0c;有没有被这张图刷屏 我只能说网友太强大了 说实话&#xff0c;我进入舟老师的直播间&#xff0c;每次都是还有3分钟下播&#xff0c;还有6单就拍完 但是10分钟后还在激情逼单&#xff0c;6单之后还有6单 也许在营销学上&#x…

C++笔记:OOP三大特性之多态

前言 本博客中的代码和解释都是在VS2019下的x86程序中进行的&#xff0c;涉及的指针都是 4 字节&#xff0c;如果要其他平台下测试&#xff0c;部分代码需要改动。比如&#xff1a;如果是x64程序&#xff0c;则需要考虑指针是8bytes问题等等。 文章目录 前言一、多态的概念二、…

【C++初阶】系统实现日期类

目录 一.运算符重载实现各个接口 1.小于 (d1)<> 2.等于 (d1d2) 3.小于等于&#xff08;d1<d2&#xff09; 4.大于&#xff08;d1>d2&#xff09; 5.大于等于&#xff08;d1>d2&#xff09; 6.不等于&#xff08;d1!d2&#xff09; 7.日期天数 (1) 算…

mac图片怎么转换格式jpg?四种高效方法助你轻松搞定JPG格式

mac图片怎么转换格式jpg&#xff1f;在数字时代&#xff0c;图片格式的转换成为了我们日常操作中的一项基本技能。特别是在使用Mac操作系统的用户中&#xff0c;如何将图片转换为JPG格式成为了一个热门话题。本文将为你详细介绍四种简单实用的方法&#xff0c;帮助你在Mac上轻松…

测试基础1:伟大航路哟呼(Linux基础、mysql基础)

1 测试流程和方法 软件测试定义&#xff1a; 从方式上看&#xff1a;包含人工测试、自动化测试 从方法上看&#xff1a;运行程序或系统和测定程序或系统的过程 从目的上看&#xff1a;包括找bug和找bug出现的原因 软件测试的原则&#xff1a;功能性、可靠性、易用性、效率性…

一、网络基础知识

1、IP地址和端口号 1.1、IP地址 定义&#xff1a;用于在网络中唯一标识设备的地址。格式&#xff1a;通常由四个数字组成&#xff0c;以点分十进制表示&#xff0c;例如&#xff1a;192.168.0.1。(IPv4)作用&#xff1a;允许网络中的设备相互通信&#xff0c;通过IP地址可以定…

Python 数据可视化之密度散点图 Density Scatter Plot

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 密度散点图&#xff08;Density Scatter Plot&#xff09;&#xff0c;也称为密度点图或核密度估计散点图&#xff0c;是一种数据可视化技术&#xff0c;主要用于展示大量数据点在二维平面上的分布情况…

一样的代码不同项目跳转页面报404的解决办法

今天收到实施反馈的一个问题&#xff0c;点项目名称跳转项目详情页面时&#xff0c;有的页面跳转显示正常&#xff0c;有的页面跳转报404错误。错误如下&#xff1a; 发现报错的项目都有一个共性就是有特殊字符“[ ]” , 解决的办法就是把带有特殊字符的字段 用 encodeURI()…

【Django】Django自定义后台表单——对一个关联外键对象同时添加多个内容

以官方文档为例&#xff1a; 一个投票问题包含多个选项&#xff0c;基本的表单设计只能一个选项一个选项添加&#xff0c;效率较低&#xff0c;如何在表单设计中一次性添加多个关联选项&#xff1f; 示例代码&#xff1a; from django.contrib import adminfrom .models impo…

【软件架构】02-复杂度来源

1、性能 1&#xff09;单机 受限于主机的CPU、网络、磁盘读写速度等影响 在多线程的互斥性、并发中的同步数据状态等&#xff1b; 扩展&#xff1a;硬件资源、增大线程池 2&#xff09;集群 微服务化拆分&#xff0c;导致调用链过长&#xff0c;网络传输的消耗过多。 集…

嵌入式Qt 计算器核心算法_3

一.后缀表达式实现算数运算思路 二.算法实现 #include "QCalculatorDec.h"QCalculatorDec::QCalculatorDec() {m_exp "";m_result ""; }QCalculatorDec::~QCalculatorDec() {}bool QCalculatorDec::isDigitOrDot(QChar c) {return ((0 < c)…