【刷題】牛客 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.pswp.cn/news/696275.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696275.shtml
英文地址,請注明出處:http://en.pswp.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) 算…