229. Majority Element II

来源:http://www.cnblogs.com/ghuosaao/archive/2016/04/28/5444086.html
-Advertisement-
Play Games

Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space. 代碼 ...


Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space.

代碼如下:(方法一:超記憶體)

 1 public class Solution {
 2     public List<Integer> majorityElement(int[] nums) {
 3         List<Integer> list=new ArrayList<>();
 4         if(nums.length==0)
 5         return list;
 6         Arrays.sort(nums);
 7         int[] a=new int[nums[nums.length-1]+1];
 8         
 9         for(int i=0;i<nums.length;i++)
10             a[nums[i]]++;
11             
12         for(int i=0;i<nums.length;)
13         {
14             if(a[nums[i]]>nums.length/3)
15             {
16                 list.add(nums[i]);
17                 i=i+a[nums[i]]-1;
18             }
19         }
20       
21         
22         return list;
23     }
24 }

 方法二:(借鑒別人的)

 1 public class Solution {
 2     public List<Integer> majorityElement(int[] nums) {
 3         List<Integer> list=new ArrayList<>();
 4         if(nums.length==0)
 5         return list;
 6         if(nums.length==1)
 7         {
 8             list.add(nums[0]);
 9             return list;
10         }
11         int m1=nums[0];
12         int m2=0;
13         int c1=1;
14         int c2=0;
15         for(int i=1;i<nums.length;i++)
16         {
17             if(m1==nums[i])
18             c1++;
19             else if(m2==nums[i])
20             c2++;
21             else  if(c1==0)
22             {
23                 m1=nums[i];
24                 c1=1;
25             }
26             else if(c2==0)
27             {
28                m2=nums[i];c2=1; 
29             }
30             else {
31                 c1--;c2--;
32             }
33         }
34         c1 = 0; c2 = 0;  
35         for(int i=0; i<nums.length; i++) {  
36             if(m1 == nums[i]) ++c1;  
37             else if(m2 == nums[i]) ++c2;  
38         }  
39         if(c1>nums.length/3)
40         list.add(m1);
41         if(c2>nums.length/3)
42         list.add(m2);
43         
44         return list;
45     }
46 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 準備了好久了,中間斷斷續續看了些資料,也寫了幾個小demo練手,今天正式開始。 因為要模擬debug和release環境,手上資源又很缺,必須把一些已經拼好的圖片進行切割,網路上找了半天倒是有幾個切圖工具,但是實在是把我噁心的不行,裝個工具,默默的在後臺給我裝了4、5個各種亂七八糟的東西。 然後工具 ...
  • 關於字元串 問題描述:一般這類程式設計的題目較簡單,通過設計字元串的反轉,尋找子串,以及字元串的拼接、刪除操作等問題。 問題 實現一個演算法來判斷一個字元串中的字元是否唯一(即沒有重覆)? 設計演算法並寫出代碼移除字元串中重覆的字元(不能使用額外的緩存空間)? 寫一個函數判斷兩個字元串是否是變位詞? 思 ...
  • 我們知道,hibernate並沒有強制要求pojo(實體類 )屬性必須是基本數據類型或者是包裝類,但是我們把屬性聲明為基本數據類型( primitive types directly)或者包裝類 ( wrapping classes for primitives)對我們代碼的編寫有著深遠的影響。 1 ...
  • 問題:在分配管腳後總是出現下麵這個錯誤報告,編譯不過。 Error (171172):Detected confilicting assignments for the following nodes. Error (171173):Node mosi1_io from partition Top ...
  • 當我們需要開發一個方法用來查詢資料庫的時候,往往會遇到這樣一個問題:就是不知道用戶到底會輸入什麼條件,那麼怎麼樣處理sql語句才能讓我們開發的方法不管接受到什麼樣的條件都可以正常工作呢?這時where '1'='1'加上list就可以完美解決這個問題了,廢話少說,上代碼: **註解: 1,以上代碼操 ...
  • 前言 首先是要安裝JDK,JDK安裝好之後,還需要在電腦上配置"JAVA_HOME"、"path"、"classpath"這三個環境變數才能夠把java的開發環境搭建好。在沒安裝過jdk的環境下,path環境變數是系統變數,本來存在的,而JAVA_HOME和classpath是不存在的。 一、配置J ...
  • 函數是一種功能上的抽象,比如當我們寫一段程式,這個程式多次用到了發送郵件的功能(比如說:每天三點固定發送郵件,每當伺服器負載較重發送郵件提醒……),那麼我們就可以將發送郵件這個功能抽象出來,單獨對其定義一個函數進行實現。這樣在需要引用發送郵件功能的時候,我們就不需要重覆複製代碼,直接調用函數就可以了 ...
  • 註:文章原文為Dr. Charles Severance 的 《Python for Informatics》。文中代碼用3.4版改寫,併在本機測試通過。 一旦利用程式通過HTTP協議獲得並分析文檔變得簡單,那麼開發生成一個特殊設計的、供其他程式使用的文檔(不是在瀏覽器中顯示HTML)的方法也不用花 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...