【刷题】牛客 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,一经查实,立即删除!

相关文章

力扣49.字母异位词分组

题目描述&#xff1a; 49. 字母异位词分组 难度 中等 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea"…

在Linux中查找大文件

在Linux中查找大文件&#xff0c;你可以使用find命令结合其他工具&#xff08;如sort和du&#xff09;来实现。以下是一些常见的方法&#xff1a; 1. 使用find命令查找大文件 你可以使用find命令来查找特定大小以上的文件。例如&#xff0c;要查找当前目录及其子目录中大小超…

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

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

redis的AOF机制

Redis AOF(Append Only File)机制是为了记录每一次redis命令的操作并用于恢复数据。 AOF按顺序记录每一步操作&#xff0c;例如&#xff1a; set k 3, set k 5, set k 10 &#xff0c;当服务器重启后依次执行命令恢复k 10。 日志写入有三种方式&#xff1a; Always&#x…

【【深入浅出的了解从算法到RTL的基本流程】】

深入浅出的了解从算法到RTL的基本流程 首先 明确需求 &#xff0c;明确题目 接下来是第一轮建模-------目的是 验证算法的正确性 这个阶段分为以下两个方面 一方面是 &#xff1a; 通过一些算法仿真工具来对 这个设计进行建模 — 算法原理建模 第二方面是 &#xff1a; 是 算…

hbase最新版本配置属性

1. 说明 hbase的配置属性大全 hbase版本基于 hbase-3.0.0-alpha-4 <?xml version"1.0"?> <?xml-stylesheet type"text/xsl" href"configuration.xsl"?> <!-- /*** Licensed to the Apache Software Foundation (ASF) under…

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 -> 算法效…

nginx前缀匹配

nginx location ^~ /task/ { # 这样&#xff0c;当您访问 http://hostname:port/task/test 时&#xff0c;# 请求会被转发到 proxy_pass /test&#xff0c;注意 /task/ 前缀在转发时被去掉了。proxy_pass http://192.168.86.199:8805/; proxy_set_header Host $host; proxy…

SQL注入漏洞解析

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

Ps下载安装(专业图像处理软件Ps安装包下载2024【Windows版】)

Adobe全家桶下载方式 将持续更新~ 文章目录 Adobe全家桶下载方式Ps下载方式【点我获取下载链接】我们的网站一、Ps简介声明 Ps下载方式【点我获取下载链接】 迅雷网盘下载&#xff1a;迅雷网盘下载方式百度网盘下载&#xff1a;百度网盘下载方式夸克网盘下载&#xff1a;夸克…

【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…

深入理解nginx的动态变量机制【上】

目录 1. 概述2. 动态变量的分类2.1 按照变量名的确定性来分类2.2 按照变量声明的来源分类2.3 按照是否可以变更分类2.4 按照是否可以缓存分类2.5 按照变量的索引方式分类 3. 变量的使用3.1 声明一个变量3.1.1 支撑变量声明的nginx关键结构体3.1.2 在配置文件中声明3.1.3 在http…

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) 算…