精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字

開發(fā) 前端
數(shù)組中有一個(gè)數(shù)字出現(xiàn)的次數(shù)超過數(shù)組長(zhǎng)度的一半,請(qǐng)找出這個(gè)數(shù)字。你可以假設(shè)數(shù)組是非空的,并且給定的數(shù)組總是存在多數(shù)元素。

[[439477]]

本文轉(zhuǎn)載自微信公眾號(hào)「程序員千羽」,作者程序員千羽 。轉(zhuǎn)載本文請(qǐng)聯(lián)系程序員千羽公眾號(hào)。

Leetcode : https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/

GitHub : https://github.com/nateshao/leetcode/blob/main/algo-notes/src/main/java/com/nateshao/sword_offer/topic_31_majorityElement/Solution.java

數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字

“題目描述 :數(shù)組中有一個(gè)數(shù)字出現(xiàn)的次數(shù)超過數(shù)組長(zhǎng)度的一半,請(qǐng)找出這個(gè)數(shù)字。你可以假設(shè)數(shù)組是非空的,并且給定的數(shù)組總是存在多數(shù)元素。難度:簡(jiǎn)單示例:

  1. 輸入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 
  2.  
  3. 輸出: 2 

解題思路:

“本文將 “數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字” 簡(jiǎn)稱為 “眾數(shù)” 。需要注意的是,數(shù)學(xué)中眾數(shù)的定義為 “數(shù)組中出現(xiàn)次數(shù)最多的數(shù)字” ,與本文定義不同。

本題常見的三種解法:

  • 哈希表統(tǒng)計(jì)法:遍歷數(shù)組 nums ,用HashMap統(tǒng)計(jì)各數(shù)字的數(shù)量,即可找出眾數(shù)。此方法時(shí)間和空間復(fù)雜度均為O(N)。
  • 數(shù)組排序法:將數(shù)組nums 排序,數(shù)組中點(diǎn)的元素一定為眾數(shù)。
  • 摩爾投票法:核心理念為票數(shù)正負(fù)抵消。此方法時(shí)間和空間復(fù)雜度分別為O(N)和0(1),為本題的 最佳解法。

摩爾投票法:

“設(shè)輸入數(shù)組 nums 的眾數(shù)為x,數(shù)組長(zhǎng)度為n。

推論一: 若記眾數(shù)的票數(shù)為+1,非眾數(shù)的票數(shù)為-1,則一定有所有數(shù)字的票數(shù)和> 0。推論二: 若數(shù)組的前a個(gè)數(shù)字的票數(shù)和=0,則數(shù)組剩余(n-a)個(gè)數(shù)字的票數(shù)和一定仍> 0,即后(n- a)個(gè)數(shù)字的眾數(shù)仍為x。

根據(jù)以上推論,記數(shù)組首個(gè)元素為n1,眾數(shù)為x,遍歷并統(tǒng)計(jì)票數(shù)。當(dāng)發(fā)生票數(shù)和= 0時(shí),剩余數(shù)組的眾 數(shù)-定不變,這是由于:

  • 當(dāng)n1=x:抵消的所有數(shù)字中,有一半是眾數(shù)x。
  • 當(dāng)n1≠x:抵消的所有數(shù)字中,眾數(shù)x的數(shù)量最少為0個(gè),最多為一半。

利用此特性,每輪假設(shè)發(fā)生票數(shù)和 = 0 都可以 縮小剩余數(shù)組區(qū)間 。當(dāng)遍歷完成時(shí),最后一輪假設(shè)的數(shù)字即為眾數(shù)。

算法流程:

  • 初始化: 票數(shù)統(tǒng)計(jì) votes = 0 , 眾數(shù) x;
  • 循環(huán): 遍歷數(shù)組 nums 中的每個(gè)數(shù)字 num ;
    • 當(dāng) 票數(shù) votes 等于 0 ,則假設(shè)當(dāng)前數(shù)字 num 是眾數(shù);
    • 當(dāng) num = x 時(shí),票數(shù) votes 自增 1 ;當(dāng) num != x 時(shí),票數(shù) votes 自減 1 ;
  • 返回值: 返回 x 即可;

復(fù)雜度分析:

  • 時(shí)間復(fù)雜度 O(N) : N 為數(shù)組 nums 長(zhǎng)度。
  • 空間復(fù)雜度 O(1) : votes 變量使用常數(shù)大小的額外空間。
  1. public static int majorityElement1(int[] nums) { 
  2.         int x = 0, votes = 0; 
  3.         for(int num : nums){ 
  4.             if(votes == 0) x = num; 
  5.             votes += num == x ? 1 : -1;// votes = votes + ( num == x ? 1 : -1); 
  6.         } 
  7.         return x; 
  8.     } 

拓展: 由于題目說明 給定的數(shù)組總是存在多數(shù)元素 ,因此本題不用考慮 數(shù)組不存在眾數(shù) 的情況。若考慮,需要加入一個(gè) “驗(yàn)證環(huán)節(jié)” ,遍歷數(shù)組 nums 統(tǒng)計(jì) x 的數(shù)量。

  • 若 x 的數(shù)量超過數(shù)組長(zhǎng)度一半,則返回 x ;
  • 否則,返回未找到眾數(shù);

時(shí)間和空間復(fù)雜度不變,仍為 O(N)和 O(1) 。

  1. public int majorityElement11(int[] nums) { 
  2.         int x = 0, votes = 0, count = 0; 
  3.         for(int num : nums){ 
  4.             if(votes == 0) x = num; 
  5.             votes += num == x ? 1 : -1; 
  6.         } 
  7.         // 驗(yàn)證 x 是否為眾數(shù) 
  8.         for(int num : nums) 
  9.             if(num == x) count++; 
  10.         return count > nums.length / 2 ? x : 0; // 當(dāng)無眾數(shù)時(shí)返回 0 
  11.     } 

代碼

  1. package com.nateshao.sword_offer.topic_31_majorityElement; 
  2.  
  3. import java.util.Arrays; 
  4.  
  5. /** 
  6.  * @date Created by 邵桐杰 on 2021/12/5 17:16 
  7.  * @微信公眾號(hào) 程序員千羽 
  8.  * @個(gè)人網(wǎng)站 www.nateshao.cn 
  9.  * @博客 https://nateshao.gitee.io 
  10.  * @GitHub https://github.com/nateshao 
  11.  * @Gitee https://gitee.com/nateshao 
  12.  * Description: 劍指 Offer 39. 數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字 
  13.  * 題目描述:數(shù)組中有一個(gè)數(shù)字出現(xiàn)的次數(shù)超過數(shù)組長(zhǎng)度的一半,請(qǐng)找出這個(gè)數(shù) 
  14.  * 字。如果不存在則輸出 0。 
  15.  */ 
  16. public class Solution { 
  17.     public static void main(String[] args) { 
  18.         int[] arr = {1, 2, 3, 2, 2, 2, 5, 4, 2}; 
  19.         int i1 = majorityElement1(arr); 
  20.         int i2 = majorityElement2(arr); 
  21.         int i3 = majorityElement3(arr); 
  22.         System.out.println("i = " + i1); // i = 2 
  23.         System.out.println("i2 = " + i2); 
  24.         System.out.println("i3 = " + i3); 
  25.  
  26.     } 
  27.     /******************** 精選 *********************/ 
  28.     public static int majorityElement1(int[] nums) { 
  29.         int x = 0, votes = 0; 
  30.         for(int num : nums){ 
  31.             if(votes == 0) x = num; 
  32.             votes += num == x ? 1 : -1;// votes = votes + ( num == x ? 1 : -1); 
  33.         } 
  34.         return x; 
  35.     } 
  36.     /**************** 拓展 *********************/ 
  37.     public int majorityElement11(int[] nums) { 
  38.         int x = 0, votes = 0, count = 0; 
  39.         for(int num : nums){ 
  40.             if(votes == 0) x = num; 
  41.             votes += num == x ? 1 : -1; 
  42.         } 
  43.         // 驗(yàn)證 x 是否為眾數(shù) 
  44.         for(int num : nums) 
  45.             if(num == x) count++; 
  46.         return count > nums.length / 2 ? x : 0; // 當(dāng)無眾數(shù)時(shí)返回 0 
  47.     } 
  48.     /****************** 劍指offer **********************/ 
  49.     /** 
  50.      * 思路:將首次出現(xiàn)的數(shù) count+1,與之后的數(shù)進(jìn)行比較,相等則+1,否則—1, 
  51.      * 最后進(jìn)行校驗(yàn)是否超過長(zhǎng)度的一半。 
  52.      * 
  53.      * @param nums 
  54.      * @return 
  55.      */ 
  56.     public static int majorityElement2(int[] nums) { 
  57.         int count = 0; 
  58.         int candidate = 0; 
  59.         for (int num : nums) { 
  60.             if (count == 0) candidate = num; 
  61.             count += (num == candidate) ? 1 : -1; 
  62.         } 
  63.         return checkMoreThanHalf(nums, candidate) ? candidate : 0; 
  64.     } 
  65.  
  66.     private static boolean checkMoreThanHalf(int[] array, int number) { 
  67.         int times = 0; 
  68.         for (int i : array) { 
  69.             if (i == number) times++; 
  70.         } 
  71.         return times * 2 >= array.length; 
  72.     } 
  73.  
  74.  
  75.     public static int majorityElement3(int[] nums) { 
  76.         Arrays.sort(nums); 
  77.         return nums[nums.length/2]; 
  78.     } 

 參考文獻(xiàn):https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/solution/mian-shi-ti-38-zi-fu-chuan-de-pai-lie-hui-su-fa-by/

 

責(zé)任編輯:武曉燕 來源: 程序員千羽
相關(guān)推薦

2020-07-13 09:48:58

云計(jì)算云安全數(shù)據(jù)

2015-07-27 10:24:01

蘋果中國(guó)

2020-12-04 10:11:26

Unsafejava并發(fā)包

2013-02-25 10:11:35

4GLTE商用網(wǎng)絡(luò)

2018-12-20 09:04:33

谷歌搜索移動(dòng)

2020-06-05 15:02:19

混合云多云云計(jì)算

2022-02-07 09:53:15

物聯(lián)網(wǎng)設(shè)備漏洞物聯(lián)網(wǎng)

2018-06-03 08:49:21

2013-11-27 15:48:56

移動(dòng)中間件廠商

2013-01-11 13:28:36

移動(dòng)互聯(lián)網(wǎng)訪問流量iOS

2017-02-24 13:53:38

HTTPS流量互聯(lián)網(wǎng)

2016-12-16 13:07:30

云存儲(chǔ)運(yùn)營(yíng)混合云

2017-02-27 16:54:20

HTTPS網(wǎng)絡(luò)流量互聯(lián)網(wǎng)

2010-09-17 16:21:33

系統(tǒng)升級(jí)

2009-04-30 09:01:25

微軟操作系統(tǒng)Windows 7

2017-09-18 16:29:55

多云OpenStack無服務(wù)器

2011-08-17 10:53:16

Firefox 7

2019-10-30 15:22:37

數(shù)字化轉(zhuǎn)型IDC零售

2010-07-12 09:28:59

Windows 764位

2023-07-20 12:32:42

Linux桌面
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久久一二三区| 久久精品视频16| 国产乱人乱偷精品视频a人人澡| 天天做天天爱天天综合网| 欧美一级淫片007| 大陆极品少妇内射aaaaa| av在线女优影院| 国产成人亚洲综合a∨猫咪| 国产91ⅴ在线精品免费观看| gv天堂gv无码男同在线观看 | 国产日韩欧美成人| 欧美人与性动交| 天堂…中文在线最新版在线| 欧美18xxxxx| 国产一区二区在线免费观看| 国产91精品视频在线观看| 我想看黄色大片| 91夜夜蜜桃臀一区二区三区| 欧美亚洲综合网| 欧美不卡在线播放| 免费网站看v片在线a| 97aⅴ精品视频一二三区| 成人黄色影片在线| 波多野结衣视频网站| 五月精品视频| 国产亚洲免费的视频看| 成人啪啪18免费游戏链接| 成人一级福利| 亚洲精品午夜久久久| 日本一区二区不卡高清更新| 欧美少妇bbw| 国产麻豆视频一区| 国产精品视频成人| 九九九在线观看| 亚洲午夜极品| 久久综合免费视频影院| a资源在线观看| 久操国产精品| 日韩成人中文字幕| 国产精品亚洲一区二区无码| **精品中文字幕一区二区三区| 日韩欧美在线播放| a在线视频观看| 99热99re6国产在线播放| 综合电影一区二区三区 | 国产精品久久久久久久久久东京 | 91精品福利视频| 国产精品秘入口18禁麻豆免会员| 丁香花在线电影小说观看| 日日狠狠久久| av一本久道久久综合久久鬼色| 91精品视频播放| 亚洲无码久久久久| 麻豆91在线看| 成人自拍性视频| 国产手机av在线| 国产一区二区不卡老阿姨| 91免费视频网站| a天堂在线观看视频| 国产乱码精品一区二区三区忘忧草 | 国产精品不卡av| 伊人久久婷婷| 992tv成人免费影院| 日韩 欧美 中文| 视频一区视频二区中文| 国产精品成人aaaaa网站| 日本高清不卡码| 国产精品久久久免费| 最好看的2019的中文字幕视频| 特黄一区二区三区| 亚洲国产一区二区三区在线播放| 久久黄色av网站| 国产wwwwxxxx| 中文精品久久| 欧美日韩aaaa| 久久精品亚洲无码| 亚洲电影av| 55夜色66夜色国产精品视频| 日韩欧美视频在线免费观看| 日韩午夜免费视频| 欧洲精品久久久| 五月婷婷丁香在线| 狠狠色狠狠色综合日日91app| 国产日韩欧美日韩大片| 国产剧情久久久| 粉嫩久久99精品久久久久久夜| 国产成人精品免费视频大全最热 | 爱爱爱视频网站| av在线网址观看| 亚洲综合成人在线视频| 青青草精品视频在线| 黄色国产精品视频| 色资源在线观看| 久久精品夜色噜噜亚洲aⅴ| 无遮挡亚洲一区| 91电影在线播放| 午夜精品久久久久久久99樱桃| 欧美色图色综合| 成人黄色免费观看| 日韩免费电影网站| 色天使在线视频| 欧美亚洲国产一区| 欧美日韩不卡合集视频| 国产无码精品在线观看| 久久精品首页| 亚洲xxxx在线| 污污视频在线免费看| 国产欧美日产一区| 久久www视频| 欧美片第1页| 在线不卡欧美精品一区二区三区| 人妻换人妻a片爽麻豆| 国产成人1区| 久热爱精品视频线路一| 国产成人精品网| 国产专区欧美精品| 麻豆精品传媒视频| 国内精品一区视频| 精品福利在线看| 亚洲第一区第二区第三区| 亚洲另类春色校园小说| 久久久精品国产一区二区| 久久久午夜影院| 国产一区999| 亚洲精品久久嫩草网站秘色| 亚洲综合最新在线| 男人的天堂av高清在线| 一区二区三区中文在线| 国产精品无码专区av在线播放| av日韩在线免费观看| 亚洲码在线观看| 久久精品美女视频| 粉嫩aⅴ一区二区三区四区 | 亚洲精品一区二区口爆| 久久精品人人做| 97中文字幕在线| 99精品国自产在线| 亚洲女人天堂网| 久久久久成人网站| 精品夜夜嗨av一区二区三区| 免费在线国产精品| 黄色在线观看www| 欧美一区二区三区精品| 欧美日韩国产黄色| 性色一区二区三区| 国产一区二区高清视频| 羞羞网站在线看| 欧美精品xxxxbbbb| 永久免费观看片现看| 性久久久久久| 国产精品久久免费看| 精品无人区一区二区三区 | 在线观看日韩av| 免费看一级视频| 波多野洁衣一区| 日韩在线观看a| 亚洲小说春色综合另类电影| 久久韩国免费视频| 99精品在线视频观看| 亚洲视频综合在线| 亚洲一级片av| 影视亚洲一区二区三区| 91在线观看免费高清| 香蕉成人app免费看片| 日韩视频免费观看高清完整版| 91精品少妇一区二区三区蜜桃臀| 免费视频最近日韩| 亚洲午夜精品一区二区| 欧美暴力调教| 自拍偷拍亚洲在线| 一级特黄色大片| 亚洲视频一区二区在线| www.欧美日本| 成人精品影视| 国产精品久久久久久久av大片| 色的视频在线免费看| 黄色的视频在线免费观看| 亚洲国产精品视频| av漫画在线观看| 在线视频精品| 日本在线观看一区| 国产成人免费9x9x人网站视频| 中文字幕亚洲字幕| 国产白浆在线观看| 午夜精品免费在线观看| 国内精品久久99人妻无码| 久久中文字幕一区二区三区| 午夜精品区一区二区三| www999久久| 久久久久久欧美| 黄色在线小视频| 欧美日韩国产成人在线91| 午夜国产福利一区二区| 国产盗摄女厕一区二区三区| 99蜜桃臀久久久欧美精品网站| 欧美jizz19性欧美| 国产精品嫩草影院久久久| 国产成人在线视频免费观看| 精品99久久久久久| 日韩一级片中文字幕| 中文字幕一区二区在线播放| 中文字幕永久免费| 久久这里只有| 久久人妻无码一区二区| jizz久久精品永久免费| 国产精品丝袜视频| 久草在线资源站资源站| 亚洲欧美综合另类中字| 97超碰人人草| 欧美午夜激情在线| 一区二区视频免费看| 久久综合九色综合欧美98| 亚洲美女性囗交| 亚洲国产黄色| 亚洲一区 在线播放| 最新亚洲精品| 99国产高清| 成人在线免费av| 国内精品美女av在线播放| eeuss影院www在线播放| 亚洲精品v欧美精品v日韩精品| 国产欧美日韩高清| 亚洲中文一区二区| 一区二区三区在线播| 丁香激情五月少妇| 99久久伊人网影院| 一区二区三区国产好的精华液| 亚洲欧美日韩国产综合精品二区| 91精品一区二区三区四区| 欧美色图在线播放| 欧美精品在线一区| 好吊妞视频这里有精品| 91麻豆国产语对白在线观看| 神马久久资源| 97精品国产91久久久久久| 成人黄视频在线观看| 国产一区二区日韩| 无码精品视频一区二区三区| 亚洲国产成人精品久久久国产成人一区 | 欧美一区二区三区在线观看视频| 中文字幕日韩免费| 精品久久久久久久久久久久久久 | 久久av资源| 国模一区二区三区私拍视频| 欧美一区在线观看视频| 国产精自产拍久久久久久| 美女写真久久影院| 欧美一级淫片丝袜脚交| 高清毛片在线观看| 欧美有码在线观看视频| 国产粉嫩在线观看| 久久久久久久国产精品视频| av网站网址在线观看| 久久影视电视剧免费网站| 婷婷视频在线| 日韩中文字幕不卡视频| 91视频在线观看| 国产香蕉一区二区三区在线视频| 加勒比一区二区三区在线| 亚洲美腿欧美激情另类| 久久精品国产亚洲a∨麻豆| 亚洲精品久久在线| 污视频软件在线观看| 日韩成人av在线| 黄色一级大片在线免费看国产| 亚洲精品国产福利| 日韩av色综合| av在线免费播放网站| 亚洲图片欧美午夜| 色综合久久影院| 久久香蕉国产线看观看av| 黄色网在线播放| 欧美精品中文字幕一区| 黄色网址在线免费观看| 高清欧美性猛交| 一区二区乱码| 国产国语videosex另类| 国产成人精品亚洲日本在线观看| 国产精品私拍pans大尺度在线| va天堂va亚洲va影视| 91精品综合久久| 在这里有精品| 久久国产精品-国产精品| 国产伦精品一区二区三区千人斩| 亚洲一卡二卡三卡| 日韩视频在线观看| 一本色道久久88亚洲精品综合| 国内久久视频| 精品人妻少妇一区二区| 日产国产欧美视频一区精品| 欧美国产日韩另类| 成人免费视频播放| 在线观看福利片| 自拍视频在线观看一区二区| 精品无码一区二区三区电影桃花| 狠狠躁夜夜躁人人爽超碰91| 一本色道久久综合精品婷婷| 亚洲国产精品福利| 国产高清在线| 欧美理论片在线观看| 国产精品一区二区av影院萌芽| 国产精品一区久久| 成人爽a毛片| 亚洲春色在线| 激情欧美一区| 天堂av在线网站| 成人福利电影精品一区二区在线观看| 免费a级黄色片| 亚洲国产成人av网| jizz国产在线| 精品国产1区2区3区| www.在线播放| 97在线免费观看| 日韩深夜福利网站| 久久综合入口| 国内综合精品午夜久久资源| 9l视频白拍9色9l视频| 成人美女视频在线观看18| 久久久久久久久福利| 午夜免费久久看| 国产精品视频第一页| 国产一区二区三区18| 青青青国内视频在线观看软件| 国产高清在线不卡| 欧美韩一区二区| 色久优优欧美色久优优| 中文天堂资源在线| 亚洲国产成人av好男人在线观看| 在线观看免费高清视频| 日韩成人中文字幕| 爱福利在线视频| 亚洲xxxx做受欧美| 怕怕欧美视频免费大全| 日韩av高清在线看片| 国产又黄又大久久| 在线免费看视频| 在线观看亚洲a| 欧美色综合一区二区三区| 久久久精品美女| 日本精品在线观看| 中文字幕av日韩精品| 日韩精品一二三| 中文在线一区二区三区| 亚洲成人资源在线| 国产精品久久影视| 久久视频在线观看免费| 国产亚洲精品精品国产亚洲综合| 久久综合色一本| 亚洲欧美视频| 亚洲精品乱码久久| 一区二区三区不卡视频| 99久久精品国产成人一区二区 | 九九九久久国产免费| 欧美视频二区欧美影视| 欧美aaa在线观看| 精品无人区卡一卡二卡三乱码免费卡| 69精品无码成人久久久久久| 色婷婷综合在线| 国产小视频福利在线| 国产精品网址在线| 国产精品99久久| 国产精品999.| 夜夜嗨av一区二区三区中文字幕 | 欧美性生活大片免费观看网址| 欧洲天堂在线观看| 国产成人综合精品| 成人av国产| 国产精品一区二区小说| 国产精品色在线| 一区二区视频免费| 九九九久久久久久| 好吊妞视频这里有精品| 日韩免费一级视频| 久久久久久9999| 综合网在线观看| 日韩在线小视频| 日韩精品一区二区三区中文在线| 久久综合亚洲精品| 成人国产精品免费观看| 五月天激情国产综合婷婷婷| 亚洲区在线播放| 亚洲欧美综合久久久久久v动漫| 强伦女教师2:伦理在线观看| 国产成人午夜精品影院观看视频| 国产午夜福利一区二区| 成人午夜av电影| 欧美精品一区免费| 国产日韩精品一区二区三区| 亚洲网站在线免费观看| 欧美国产在线电影| 波多野结衣在线观看一区二区| 午夜啪啪小视频| 精品电影在线观看| 免费黄网站在线播放| av成人在线电影| 麻豆精品视频在线| 国产性猛交普通话对白| 精品国产一区二区三区久久久蜜月 | 成人黄色在线网站| 性高潮视频在线观看|