前綴和——724. 尋找數組的中心下標

在這里插入圖片描述

文章目錄

    • 🍓1. 題目
    • 🫒2. 算法原理
      • 🦄解法一:暴力枚舉
      • 🦄解法二:前綴和
    • 🥔3. 代碼實現

🍓1. 題目

題目鏈接:724. 尋找數組的中心下標 - 力扣(LeetCode)

給你一個整數數組 nums ,請計算數組的 中心下標

數組 中心下標 是數組的一個下標,其左側所有元素相加的和等于右側所有元素相加的和。

如果中心下標位于數組最左端,那么左側數之和視為 0 ,因為在下標的左側不存在元素。這一點對于中心下標位于數組最右端同樣適用。

如果數組有多個中心下標,應該返回 最靠近左邊 的那一個。如果數組不存在中心下標,返回 -1

示例 1:

輸入:nums = [1, 7, 3, 6, 5, 6]
輸出:3
解釋:
中心下標是 3 。
左側數之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,
右側數之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等。

示例 2:

輸入:nums = [1, 2, 3]
輸出:-1
解釋:
數組中不存在滿足此條件的中心下標。

示例 3:

輸入:nums = [2, 1, -1]
輸出:0
解釋:
中心下標是 0 。
左側數之和 sum = 0 ,(下標 0 左側不存在元素),
右側數之和 sum = nums[1] + nums[2] = 1 + -1 = 0

提示:

  • 1 <= nums.length <= 104
  • -1000 <= nums[i] <= 1000

🫒2. 算法原理

🦄解法一:暴力枚舉

這題的意思就是找到一個所謂的“中間位置”(不包含這個位置),讓其兩邊的和都相等,如果整個數組都找完了,沒有符合的,那么久返回-1,這題定位在簡單級別,直接想法就是暴力枚舉。

遍歷數組,每個中心下標都枚舉出左邊和右邊的元素和,這個時間復雜度為O(N2),這里就不作示例了。
在這里插入圖片描述

🦄解法二:前綴和

我們可以用前綴和的思想來優化這個暴力解法

不要笨重的記dp[i] = dp[i-1] + arr[i]模板,根據題目實際需求分析

這里要求一個下標的左邊和右邊的元素,我們可以采用f表示前綴和數組,g表示后綴和數組:

  • f[i]表示[0,i-1]區間所有元素的和
    f[i] = f[i-1] + nums[i-1]
  • g[i]表示[i+1,n-1]區間所有元素的和
    g[i] = g[i+1] + nums[i+1]

image-20231123114326738

有了前綴和與后綴和數組,我們直接判斷f[i] == g[i]即可

細節問題:

  • 初始化:這里是從下標0開始的,那么f[0]就需要特殊處理一下,f[0] = 0
    同理g[n-1]也是,g[n-1] = 0
  • 填表順序:對于f,因為要依賴f[i-1],所以填表順序為從左向右;
    對于g,要依賴g[i+1],所以填表順序為從右向左

這個時間復雜度為O(n)+O(n)+O(n),可理解為O(N)

🥔3. 代碼實現

class Solution {
public:int pivotIndex(vector<int>& nums){int n = nums.size();vector<int> f(n),g(n);//處理前綴和數組for(int i=1;i<n;i++)f[i] = f[i-1] + nums[i-1];//處理后綴和數組for(int i=n-2;i>=0;i--)g[i] = g[i+1] + nums[i+1];//判斷for(int i=0;i<n;i++){if(f[i]==g[i])return i;}return -1;}
};

力扣這個擊敗多少用戶有時候是看網速的,如果算法沒問題,多提交幾次就行了,如果不在意,也可以忽略,沒什么影響。
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/165022.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/165022.shtml
英文地址,請注明出處:http://en.pswp.cn/news/165022.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【限時免費】20天拿下華為OD筆試之【前綴和】2023B-數字游戲【歐弟算法】全網注釋最詳細分類最全的華為OD真題題解

文章目錄 題目描述與示例題目描述輸入描述輸出描述示例一輸入輸出 示例二輸入輸出說明 解題思路前綴和簡單的數學推導哈希集合的使用 代碼PythonJavaC時空復雜度 華為OD算法/大廠面試高頻題算法練習沖刺訓練 題目描述與示例 題目描述 小明玩一個游戲。 系統發1n張牌&#xff…

某60區塊鏈安全之未初始化的存儲指針實戰一學習記錄

區塊鏈安全 文章目錄 區塊鏈安全未初始化的存儲指針實戰一實驗目的實驗環境實驗工具實驗原理實驗過程 未初始化的存儲指針實戰一 實驗目的 學會使用python3的web3模塊 學會分析以太坊智能合約未初始化的存儲指針漏洞 找到合約漏洞進行分析并形成利用 實驗環境 Ubuntu18.04操…

深度學習之八(生成對抗網絡--Generative Adversarial Networks,GANs)

概念 生成對抗網絡(Generative Adversarial Networks, GANs)是一種深度學習模型,由 Ian Goodfellow 等人于2014年提出。GAN 的目標是通過訓練兩個神經網絡(生成器和判別器),使得生成器能夠生成與真實數據相似的樣本,而判別器能夠區分真實樣本和生成樣本。這兩個網絡相…

多元邏輯回歸模型的概念、模型檢驗以及應用

多元邏輯回歸是邏輯回歸的一種擴展&#xff0c;用于處理多類別分類問題。在二元邏輯回歸中&#xff0c;我們通過一個邏輯函數&#xff08;也稱為S形函數&#xff09;將輸入特征映射到一個概率值&#xff0c;用于預測兩個類別中一個的概率。而在多元邏輯回歸中&#xff0c;我們面…

沃趣班11月月考題目解析

沃趣班11月月考題目解析 1.在oracle中創建用戶時&#xff0c;若未設置default tablespace關鍵字&#xff0c;則oracle將哪個表空間分配給用戶作為默認表空間 答案&#xff1a;D.user SQL> create user mytest identified by 123456; SQL> grant connect to mytest; SQL…

【開源】基于Vue.js的海南旅游景點推薦系統的設計和實現

項目編號&#xff1a; S 023 &#xff0c;文末獲取源碼。 \color{red}{項目編號&#xff1a;S023&#xff0c;文末獲取源碼。} 項目編號&#xff1a;S023&#xff0c;文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 用戶端2.2 管理員端 三、系統展示四…

CSS特效017:球體漲水的效果

CSS常用示例100專欄目錄 本專欄記錄的是經常使用的CSS示例與技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花邊信息三部分內容。其中CSS布局主要是列出一些常用的CSS布局信息點&#xff0c;CSS特效主要是一些動畫示例&#xff0c;CSS花邊是描述了一些CSS…

前端錯誤處理與調試

** javascript錯誤處理 ** 由于javascript本身是動態語言&#xff0c;而且沒有固定的開發工具&#xff0c;因此他普遍認為是最難以調試的語言&#xff0c;在ECMAScript3新增了try-catch和throw以及一些錯誤類型&#xff0c;讓開發人員能適當的處理錯誤&#xff0c;緊接著web瀏…

多tab頁表單校驗如何做

多tab頁表單校驗如何做 在多tab頁表單中進行校驗&#xff0c;可以按照以下步驟進行&#xff1a; 創建一個表單對象&#xff0c;用于存儲表單數據和校驗規則。 分為多個tab頁&#xff0c;每個tab頁對應一個表單頁面。 定義每個tab頁中的表單字段及其相應的校驗規則。 在切換…

PHP 賦值、算數和比較運算符 學習資料

PHP 賦值、算數和比較運算符 在 PHP 中&#xff0c;賦值、算數和比較運算符用于對變量進行賦值、進行數學運算和比較操作。以下是對這些運算符的介紹和示例&#xff1a; 賦值運算符 賦值運算符用于給變量賦值。常用的賦值運算符有 、、-、*、/ 等。 示例&#xff1a; $a …

芯能轉債上市價格預測

芯能轉債-113679 基本信息 轉債名稱&#xff1a;芯能轉債&#xff0c;評級&#xff1a;AA-&#xff0c;發行規模&#xff1a;8.8億元。 正股名稱&#xff1a;芯能科技&#xff0c;今日收盤價&#xff1a;12.63元&#xff0c;轉股價格&#xff1a;13.1元。 當前轉股價值 轉債面…

基于遺傳優化的多屬性判決5G-Wifi網絡切換算法matlab仿真

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 5.算法完整程序工程 1.算法運行效果圖預覽 2.算法運行軟件版本 MATLAB2022a 3.部分核心程序 .......................................................................... %接收功率、網…

數字孿生智慧校園 Web 3D 可視化監測

當今&#xff0c;智慧校園發展階段亟需推動信息可視化建設與發展&#xff0c;將大數據、云計算、可視化等高新技術相融合&#xff0c;為校園師生創造科學智能的學習環境&#xff0c;并實現教學資源最大化和信息服務智能化。幫助學校更好地應用校園可視化技術&#xff0c;提升校…

原型模式 (Prototype Pattern)

定義&#xff1a; 原型模式&#xff08;Prototype Pattern&#xff09;是一種創建型設計模式&#xff0c;它用于創建重復的對象&#xff0c;同時保持性能。這種模式的核心思想是通過復制一個已存在的實例來創建新的實例&#xff0c;而不是新建實例并對其進行初始化。原型模式適…

jetson xavier NX深度學習環境配置

文章目錄 jetson xavier NX深度學習環境配置1. SD卡系統燒錄1.1 材料1.2 軟件配置1.3 格式化SD卡1.4 系統鏡像燒錄 2. 環境配置2.1 cuda環境配置2.2 安裝依賴庫2.3 安裝python及依賴環境2.4 安裝pytorch環境 jetson xavier NX深度學習環境配置 1. SD卡系統燒錄 1.1 材料 SD …

面試題 —— 前端精選(1)

文章目錄 前言 闡述 JS 的事件循環 JS 中的計時器能做到精確計時嗎&#xff1f;為什么&#xff1f; 如何理解 JS 的異步&#xff1f; 前言 本文章介紹三道圍繞 JavaScript 的精選面試題 闡述 JS 的事件循環 事件循環?叫做消息循環&#xff0c;是瀏覽器渲染主線程的?作?式…

CentOS虛擬機重置賬號密碼

虛擬機忘記密碼了 一般來說&#xff0c;虛擬機的賬號密碼&#xff0c;工作中都會有文檔記錄&#xff0c;如果忘記了可以查看文檔。但是也有特例&#xff0c;虛擬機的密碼沒有記錄到文檔中&#xff0c;嘗試了很多次依然登錄失敗&#xff0c;這時候就只能重置賬號密碼了。 1.重…

upload-labs關卡13(基于白名單的0x00截斷繞過)通關思路

文章目錄 前言一、回顧上一關知識點二、靶場第十三關通關思路1、看源代碼2、bp進行0x00截斷繞過3、蟻劍連接 總結 前言 此文章只用于學習和反思鞏固文件上傳漏洞知識&#xff0c;禁止用于做非法攻擊。注意靶場是可以練習的平臺&#xff0c;不能隨意去尚未授權的網站做滲透測試…

nginx中proxy_pass的配置

Nginx的官網將proxy_pass分為兩種類型&#xff1a; 不帶URI方式&#xff1a;只包含IP和端口號的&#xff0c;不帶uri&#xff08;單個/也算uri&#xff09;&#xff0c;比如proxy_pass http://localhost:8080&#xff1b;帶URI方式&#xff1a;在端口號之后有其他路徑的&#…

思維模型 潘多拉效應

本系列文章 主要是 分享 思維模型 &#xff0c;涉及各個領域&#xff0c;重在提升認知。越是禁止&#xff0c;越是好奇。 1 潘多拉效應的應用 1.1 潘多拉效應在管理中的應用 通用電氣公司曾經推出了一項名為“六西格瑪”的管理方法&#xff0c;該方法旨在通過優化業務流程和提…