【C語言】每日一題(尋找數組的中心下標)

尋找數組的中心下標,鏈接奉上

方法

  • 暴力循環
  • 前綴和

在這里插入圖片描述

暴力循環

???????思路:

依舊是我們的老朋友,暴力循環。
1.可以利用外層for循環,循環變量為數組下標,在循環內分別求出下標左邊與右邊的sum
2.在邊界時討論,
當下標為左邊界(nums[0])時,left sum=0;當下標為右邊界(nums[numsSize-1)時,right sum=0
3.討論完特殊情況后,進行左邊與右邊的比較;
左==右時,即代表我們找到了下標;
否則返回-1。

代碼實現:

int pivotIndex(int* nums, int numsSize)
{for(int i=0;i<numsSize;i++)//外層for循環{int Lsum=0;//left sum的縮寫。//在循環內部放置是因為防止這次的lsum加上上次的lsum,造成計算錯誤。if(i==0)//特殊情況,左邊界Lsum=0;elsefor(int j=0;j<i;j++)//求lsum的值Lsum+=nums[j];int Rsum=0;if(i==numsSize-1)Rsum=0;elsefor(int j=i+1;j<numsSize;j++)Rsum+=nums[j];if(Lsum==Rsum)return i;}return -1;
}

但是,此種方法的時間復雜度巨大無比,我們可以進行改進

我們發現,每次進入for循環內時,總是會有重復的計算出現,比如:
計算i=0時的Rsum(ringt sum縮寫),每次都重新計算了一遍,但是我們可以在上一次的基礎上進行減nums[i],大大降低了計算量。

代碼實現:

int pivotIndex(int* nums, int numsSize)
{int i=0;int j=0;int Lsum=0;int Rsum=0;for(i=0;i<numsSize;i++)//首先計算出Rsum的值,i=0時{Rsum+=nums[i];}for(i=0;i<numsSize;i++){if(i==0)Lsum=0;elseLsum+=nums[i-1];//上一次的基礎上加上nums[i-1]if(i==numsSize-1)Rsum=0;elseRsum-=nums[i];//上一次的基礎上減上nums[i]if(Lsum==Rsum)return i;}return -1;
}

但是這樣每次進循環都會判斷一次是否在邊界處
則可以在外部進行判斷

int pivotIndex(int* nums, int numsSize)
{int i=0;int j=0;int Lsum=0;int Rsum=0;for(i=1;i<numsSize;i++)Rsum+=nums[i];if(Lsum==Rsum)return 0;for(i=1;i<numsSize;i++){Lsum+=nums[i-1];Rsum-=nums[i];if(Lsum==Rsum)return i;}return -1;
}

前綴和

思路:

當找到下標時,意味著左右元素和相等。
設數組和為total,則total==Rsum+Lsum+nums[i]
又因左右相等,故total==2Rsum+nums[i]

代碼實現:

int pivotIndex(int* nums, int numsSize)
{int total=0;int Rsum=0;for(int i=0;i<numsSize;i++){total+=nums[i];}for(int i=0;i<numsSize;i++){if(Rsum*2+nums[i]==total)return i;Rsum+=nums[i];}return -1;
}

歡迎討論哦

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

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

相關文章

JAVA 鼠標控制與鍵盤輸入控制

核心類&#xff1a;java.awt.Robot 該類是JDK定義的電腦系統的抽象類,可以用來模擬實現鼠標點擊與鍵盤輸入等信息 簡單實現一個自動搶票代碼&#xff1a; Robot rt new Robot();//可以認為是操作間隔的停歇時間&#xff0c;比如等待頁面加載&#xff0c;等彈框內容展示等 r…

vue tree禁用和多選變為單選

禁用的話和后臺協調一下&#xff0c;參數中多返回一個disabled 多選變單選 在tree結構中加入一個方法 <el-treeaccordion:data"deptOptions":props"defaultProps"show-checkbox:expand-on-click-node"false":filter-node-method"filte…

windows bat 腳本實現FTP自動下載上傳

windows bat 腳本實現FTP自動下載上傳 1. 自動下載 # 示例&#xff1a;實現自動下載 echo Off echo open 192.168.137.102>>ftp.txt echo admin>>ftp.txt echo admin12345>>ftp.txt echo lcd D:\>>ftp.txt echo cd /admin/1>>ftp.txt echo bin…

k8s整合istio配置gateway入口、配置集群內部服務調用管理

一、 istio gateway使用demo kubectl apply -f - <<EOF apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata:name: ngdemo-gatewaynamespace: ssx spec:selector:istio: ingressgateway # use Istio default gateway implementationservers:- port:numbe…

碼銀送書第五期《互聯網廣告系統:架構、算法與智能化》

廣告平臺的建設和完善是一項長期工程。例如&#xff0c;谷歌早于2003年通過收購Applied Semantics開展Google AdSense 項目&#xff0c;而直到20年后的今天&#xff0c;谷歌展示廣告平臺仍在持續創新和提升。廣告平臺是負有營收責任的復雜在線平臺&#xff0c;對其進行任何改動…

Mysql—修改用戶密碼(重置密碼)

Mysql—修改用戶密碼&#xff08;重置密碼&#xff09; 1、登錄mysql 1 2 [rootlocalhost ~]# mysql -uroot -p123456 [rootlocalhost ~]# mysql -hlocalhost -uroot -p123456 如果忘記密碼&#xff0c;則跳過MySQL的密碼認證過程。步驟如下&#xff1a; 修改Mysql配置文件…

TypeScript教程(三)變量聲明

一、變量聲明 變量是一種使用方便的占位符&#xff0c;用于引用計算機內存地址&#xff0c;可以將變量看做存儲數據的容器 命名規則&#xff1a; 1.變量名稱可以包含數字和字母 2.除了下劃線_和美元$符號外&#xff0c;不能包含其他特殊字符&#xff0c;包括空格 3.變量名…

使用GUI Guider工具在MCU上開發嵌入式GUI應用 (1) - GUI Guider簡介及安裝

使用GUI Guider工具在MCU上開發嵌入式GUI應用 (1) - GUI Guider簡介及安裝 受限于每篇文章最多只能貼9張圖的限制&#xff0c;這個教程被拆分成了多篇文章連載發布&#xff0c;完整目錄結構如下圖x所示。后續會發布完整教程的pdf文件&#xff0c;敬請期待。 圖x 完整教程文檔…

機器學習 | Python實現KNN(K近鄰)模型實踐

機器學習 | Python實現KNN(K近鄰)模型實踐 目錄 機器學習 | Python實現KNN(K近鄰)模型實踐基本介紹模型原理源碼設計學習小結參考資料基本介紹 一句話就可以概括出KNN(K最近鄰算法)的算法原理:綜合k個“鄰居”的標簽值作為新樣本的預測值。更具體來講KNN分類過程,給定一個訓…

網絡安全(自學)

想自學網絡安全&#xff08;黑客技術&#xff09;首先你得了解什么是網絡安全&#xff01;什么是黑客&#xff01; 網絡安全可以基于攻擊和防御視角來分類&#xff0c;我們經常聽到的 “紅隊”、“滲透測試” 等就是研究攻擊技術&#xff0c;而“藍隊”、“安全運營”、“安全…

無服務器架構發布啦!

導讀Serverless 1.15.2 已發布。The Serverless Framework (無服務器架構&#xff09;允許你自動擴展、按執行付費、將事件驅動的功能部署到任何云。 目前支持 AWS Lambda、Apache OpenWhisk、Microsoft Azure&#xff0c;并且正在擴展以支持其他云提供商。 Serverless 降低了…

nodejs+vue+elementui電影訂票網站系統_wqc3k

電影訂票系統在國內有很多值得借鑒的例子&#xff0c;功能也都趨于完善&#xff0c;因此此次電影訂票系統將輕量化開發&#xff0c;要完成以下功能&#xff1a; &#xff08;1&#xff09;要支持完整的用戶注冊&#xff0c;登錄功能&#xff0c;賬號的管理通過管理員來實現。 &…

PHP中的16個危險函數

php中內置了許許多多的函數&#xff0c;在它們的幫助下可以使我們更加快速的進行開發和維護&#xff0c;但是這個函數中依然有許多的函數伴有高風險的&#xff0c;比如說一下的16個函數不到萬不得已不盡量不要使用&#xff0c;因為許多“高手”可以通過這些函數抓取你的漏洞。 …

【Spring】核心容器——集合注入

1、集合種類 數組 List Set Map Properties 2、配置 <bean id"bookDao" class"dao.impl.BookDaoImpl"><property name"array"><array><value>2</value><value>4</value><value>6</value&g…

Docker升級后,出現Error response from daemon: Unknown runtime specified docker-runc

現象&#xff1a;docker升級版本后&#xff0c;重啟docker服務出現&#xff1a; [rootDocker scripts]# docker start registry Error response from daemon: Unknown runtime specified docker-runc Error: failed to start containers: registry解決辦法&#xff1a; 改完之…

大數據Flink(六十三):SqlClient工具的使用

文章目錄 SqlClient工具的使用 一、???????入門

【獨立版】新零售社區團購電商系統生鮮水果商城興盛優選十薈團源碼

【獨立版】新零售社區團購電商系統生鮮水果商城興盛優選十薈團源碼

私有服務Nexus安裝

下載地址&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1xpOyRg7SfJsui5cL8PVRDg 提取碼&#xff1a;i574 解壓&#xff1a; tar -zxvf nexus-3.12.1-01-unix.tar.gz生成2個文件夾 nexus-3.12.1-01 和 sonatype-work用root用戶給普通用戶授權這2個文件夾的權限 例…

k8s認證詳解 k8s證書詳解 2023推薦

推薦閱讀 https://www.yii666.com/blog/478731.html?actiononAll 在 Kube-apiserver 中提供了很多認證方式&#xff0c;其中最常用的就是 TLS 認證&#xff0c;當然也有 BootstrapToken&#xff0c;BasicAuth 認證等&#xff0c;只要有一個認證通過&#xff0c;那么 Kube-api…

NeMo 聲紋識別VPR-實戰

聲紋識別(VPR) ,生物識別技術的一種,也稱為說話人識別 ,是從說話人發出的語音信號中提取聲紋信息,從應用上看,可分為: 說話人辨認(Speaker Identification):用以判斷某段語音是若干人中的哪一個所說的,是“多選一”問題;說話人確認(Speaker Verification):用以確認某…