【C語言】每日一題(多數元素)

多數元素,鏈接奉上

方法

  • 1.摩爾投票
  • 2.合理但錯誤的方法
    • 2.1暴力循環
    • 2.2排序+求出中間元素中間元素

在這里插入圖片描述

1.摩爾投票

先來簡單的介紹摩爾投票:

摩爾投票是一種用來解決絕對眾數問題的算法。

什么是絕對眾數呢?

在一個集合中,如果一個元素的出現次數比其他所有元素的出現次數之和還多,那么就稱它為這個集合的絕對眾數。等價地說,絕對眾數的出現次數大于總元素數的一半。

思路:

設置一個計數器count
利用絕對眾數與非絕對眾數相互對抗、抵消,
首先遍歷數組
遇到相同的count++,不同的count--
在根據count的數值設置當前的candidate(投票對象)
因為絕對眾數>非絕對眾數,對抗過后剩下的那個元素一定是絕對眾數

代碼實現:

int majorityElement(int* nums, int numsSize)
{//mooreint i=0;int candidate=nums[0];//設置投票對象int count=1;//因為投票對象是nums[0],本身就是1票for(i=1,count=1;i<numsSize;i++)//遍歷數組{if(candidate==nums[i])//當投票對象與當前元素相同時count++count++;else{//否則count--count--;if(count<0)//當投票對象票數<0,重新選擇對象{candidate=nums[i];count=1;//票數重置為1}}}return candidate;
}

2.合理但錯誤的方法

這是題主自己經歷的錯誤,因為超出運行時間,所以不可以用

但是
注意2.2中的方法會根據排序的不同方法而產生不同影響
例如:

冒泡排序會時間出界,但快速排序不會

2.1暴力循環

馬有失蹄,暴力循環也會

思路:

設置計數器count=0
利用外部循環變量作為數組下標,
在內層也設置一個循環變量為數組下標,
與每一個數組元素進行比較,相同時count++ 當滿足count>numssize/2break

代碼實現:

int majorityElement(int* nums, int numsSize)
{int i = 0;for (i = 0; i < numsSize; i++){int count = 0;for (int j = 0; j < numsSize; j++){if (nums[i] == nums[j])count++;}if (count > numsSize / 2)break;}return nums[i];}

2.2排序+求出中間元素中間元素

思路:

先進行排序,之后求出nums[numsSize/2](中間元素),因為絕對眾數所占元素必定過半,故中間元素一定為絕對眾數,再return中間元素

代碼實現:

int majorityElement(int* nums, int numsSize)
{int i = 0;int tmp = 0;for (i = 0; i < numsSize - 1; i++){for (int j = 0; j < numsSize - 1 - i; j++){if (nums[j] > nums[j + 1]){tmp = nums[j];nums[j] = nums[j + 1];nums[j + 1] = tmp;}}}return nums[numsSize/2];
}

歡迎討論哦

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

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

相關文章

[國產MCU]-BL602開發實例-SPI與WS2812B驅動

SPI與WS2812B驅動 文章目錄 SPI與WS2812B驅動1、BL602的SPI介紹2、SPI驅動API介紹3、WS2812B介紹4、WS2812B的SPI驅動實現串行外設接口(Serial Peripheral Interface Bus,SPI)是一種用于短程通信的同步串行通信接口規范,設備之間使用全雙工模式通信,是一個主機和一個或多個…

每天一練:SpringBoot連接mq

目錄 每天一練:Springboot連接rabbitmq 每天一練:Springboot連接rabbitmq 目錄一、部署Rabbitmq&#xff1f;二、增加maven依賴三、連接RabbitMq四、發布和訂閱消息總結 一、部署Rabbitmq&#xff1f; 這里rabbitmq采用docker安裝部署。 拉取docker鏡像 [root192 ~]# docker…

【ChatGLM】ChatGLM-6B模型Win+4GB顯卡本地部署筆記

ChatGLM-6B是清華大學知識工程和數據挖掘小組發布的一個類似ChatGPT的開源對話機器人&#xff0c;由于該模型是經過約1T標識符的中英文訓練&#xff0c;且大部分都是中文&#xff0c;因此十分適合國內使用。 預期環境 本機電腦備注&#xff1a; Win10專業版 32G內存256固態系統…

ChatGPT 調教日記(二):程序員轉量化的背景知識

程序員如何學習量化金融 作為一個程序員學習量化金融&#xff08;quant&#xff09;是一個不錯的選擇。以下是一些建議&#xff1a; 學習金融基礎知識&#xff1a;了解金融市場、投資策略和金融產品。這將幫助你理解量化金融的背景和應用場景。 學習統計學和數學&#xff1a;…

FlutterBoost 實現Flutter頁面內嵌iOS view

在使用Flutter混合開發中會遇到一些原生比Flutter優秀的控件&#xff0c;不想使用Flutter的控件&#xff0c;想在Flutter中使用原生控件。這時就會用到 Flutter頁面中內嵌 原生view&#xff0c;這里簡單介紹一個 內嵌 iOS 的view。 注&#xff1a;這里使用了 FlutterBoost。網…

SAP動態安全庫存簡介

動態安全庫存:跑需求計劃時,ERP系統按設置的庫存方式自動計算出滿足一定時間內可保障生產的庫存數量 SAP動態安全庫存的計算公式:動態安全庫存=平均日需求*覆蓋范圍。 平均日需求=特定時期內的總需求/特定時期內的工作天數 覆蓋范圍指在沒又貨物供應的情況下,庫存可以維…

稀疏感知圖像和體數據恢復的系統對象研究(Matlab代碼實現)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;歡迎來到本博客????&#x1f4a5;&#x1f4a5; &#x1f3c6;博主優勢&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客內容盡量做到思維縝密&#xff0c;邏輯清晰&#xff0c;為了方便讀者。 ??座右銘&a…

STM32 F103C8T6學習筆記6:IIC通信__驅動MPU6050 6軸運動處理組件—一階互補濾波

今日主要學習一款傾角傳感器——MPU6050,往后對單片機原理基礎講的會比較少&#xff0c;更傾向于簡單粗暴地貼代碼&#xff0c;因為經過前些日子對MSP432的學習&#xff0c;對原理方面也有些熟絡了&#xff0c;除了在新接觸它時會對其引腳、時鐘、總線等進行仔細一些的研究之外…

ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031)

安全之安全(security)博客目錄導讀 ATF(TF-A)安全通告匯總 目錄 一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031) 二、CVE-2017-15031 一、ATF(TF-A)安全通告 TFV-5 (CVE-2017-15031) Title 未初始化或保存/恢復PMCR_EL0可能會泄露安全世界的時間信息 CVE ID CVE-2017-1503…

101.for循環語句練習題-求數列前n項的平方和

【目錄】 文章目錄 101.for循環語句練習題-求數列前n項的平方和1. 求數列前n項的平方和2. 冪函數3. f 字符串格式化語法4. 基礎代碼5. 自定義函數代碼6. 遞歸函數代碼7. 代碼總結 【正文】 101.for循環語句練習題-求數列前n項的平方和 1. 求數列前n項的平方和 【目標任務】 …

spark的standalone 分布式搭建

一、環境準備 集群環境hadoop11&#xff0c;hadoop12 &#xff0c;hadoop13 安裝 zookeeper 和 HDFS 1、啟動zookeeper -- 啟動zookeeper(11,12,13都需要啟動) xcall.sh zkServer.sh start -- 或者 zk.sh start -- xcall.sh 和zk.sh都是自己寫的腳本-- 查看進程 jps -- 有…

C++中配置OpenCV的教程

首先去OpenCV的官網下載OpenCV安裝包&#xff0c;選擇合適的平臺和版本進行下載&#xff0c;我下載的是Windows的OpenCV-4.7.0版本。OpenCV下載地址 下載好后&#xff0c;解壓到自己指定的路徑。 配置環境變量&#xff1a; WinR鍵打開運行窗口&#xff0c;輸入sysdm.cpl打開系…

星星之火:國產訊飛星火大模型的實際使用體驗(與GPT對比)

#AIGC技術內容創作征文&#xff5c;全網尋找AI創作者&#xff0c;快來釋放你的創作潛能吧&#xff01;# 文章目錄 1 前言2 測試詳情2.1 文案寫作2.2 知識寫作2.3 閱讀理解2.4 語意測試&#xff08;重點關注&#xff09;2.5 常識性測試&#xff08;重點關注&#xff09;2.6 代碼…

常識判斷

頭像 carrin&#xff5e;&#x1f47b; 產品經理 225/753 75/302.5 30/152 15/101.5 等差數列&#xff0c;所以最后一個是10/101 收起 60 回復 發布于 2020-02-18 16:33

Mysql之explain詳解

1. explain作用 使用explain可以展示出sql語句的執行計劃&#xff0c;再根據sql的執行計劃去判斷這條sql有哪些點可以進行優化&#xff0c;從而讓sql的效率達到最大化。 2. 執行計劃各列含義 &#xff08;1&#xff09;id&#xff1a;id列是select的序列號&#xff0c;這個…

React18TS項目:配置react-css-modules,使用styleName

他的好處不說了 網上一堆文章一個能打的都沒有&#xff0c; 添加開發依賴 pnpm add -D dr.pogodin/babel-plugin-react-css-modules types/react-css-modules Babel Plugin "React CSS Modules" | Dr. Pogodin Studio 看dr.pogodin/babel-plugin-react-css-mo…

centos7安裝erlang及rabbitMQ

下載前注意事項&#xff1a; 第一&#xff1a;自己的系統版本&#xff0c;centos中uname -a指令可以查看&#xff0c;el8&#xff0c;el7&#xff0c;rabbitMQ的包不一樣&#xff01; 第二&#xff1a;根據rabbitMQ中erlang version找到想要下載rabbitMQ對應erlang版本&#x…

封裝、繼承、多態

封裝是什么&#xff1f; 封裝是面向對象的特征之一&#xff0c;是對象和類概念的主要特性。 封裝&#xff0c;也就是把客觀事物封裝成抽象的類&#xff0c;并且類可以把自己的數據和方法只讓可信的類或者對象操作&#xff0c;對不可信的進行信息隱藏。 封裝&#xff0c;是把客觀…

C++儲備

一、類的 三大特性 封裝&#xff0c;繼承&#xff0c;多態 二、虛函數 為啥要用到虛函數 C虛函數詳解_Whitesad_的博客-CSDN博客 三、函數重載 四、封裝的保護權限 1.public 成員類內&#xff0c;內外都可以訪問 2.protected 成員&#xff0c;類內可以訪問&#xff0c…

大牛分析相機鏡頭光學中疑難問題

1、變焦和對焦有什么區別? 變焦就是改變鏡頭的焦距(準確說是像距),以改變拍攝的視角,也就是通常所說的把被攝體拉近或推遠。例如18-55mm和70-200mm鏡頭就是典型的變焦鏡頭。焦距越長,視角越窄。 對焦通常指調整鏡片組和底片(傳感器平面)之間的距離,從而使被攝物在CC…