leetcode169---Majority Element(陣列中出現次數超過一半的數)
問題描述:
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.
You may assume that the array is non-empty and the majority element always exist in the array.
問題求解:
解法一:O(n) time O(1) space
class Solution {
public:
int majorityElement(vector <int>& nums) {
int n=nums.size();
int candidate, nTimes;//陣列中的數和次數
for(int i=0, nTimes=0;i<n;i++)
{
if(nTimes==0)
{
candidate = nums[i], nTimes=1;
}
else
{
if(candidate == nums[i])
{
nTimes++;
}
else
{
nTimes--;
}
}
}
return candidate;
}
};
解法二:O(n) time O(1) space
class Solution {
public:
int majorityElement(vector<int>& nums) {
int n=nums.size();
int candidate=nums[0], nTimes=1;//陣列中的數和次數
for(int i=1;i<n;i++)
{
if(nums[i] == candidate)
{
nTimes++;
}
else
{
if(nTimes == 0)
{
candidate = nums[i];
nTimes = 1;
}
else
{
nTimes--;
}
}
}
return candidate;
}
};
相關推薦
leetcode169---Majority Element(陣列中出現次數超過一半的數)
問題描述: Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ time
劍指offer之陣列中出現次數超過一半的數字
1.題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 2.問題分析 方法一:使用map,統計每個數字
【劍指Offer】26陣列中出現次數超過一半的數字
題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 時間限制:1秒;空間限制:32768K;本題知識點:陣列 解題思路
【Java】 劍指offer(39) 陣列中出現次數超過一半的數字 《劍指Offer》Java實現合集 《劍指Offer》Java實現合集
本文參考自《劍指offer》一書,程式碼採用Java語言。 更多:《劍指Offer》Java實現合集 題目 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1, 2, 3, 2, 2, 2, 5, 4, 2}。由於數字2在陣列中出現
劍指offer____陣列中出現次數超過一半的數字
陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 class Solution { public: &nb
【Java】 劍指offer(40) 最小的k個數 《劍指Offer》Java實現合集 劍指offer(39) 陣列中出現次數超過一半的數字 《劍指Offer》Java實現合集
本文參考自《劍指offer》一書,程式碼採用Java語言。 更多:《劍指Offer》Java實現合集 題目 輸入n個整數,找出其中最小的k個數。例如輸入4、5、1、6、2、7、3、8這8個數字,則最小的4個數字是1、2、3、4。 思路 思路一:同劍指offer(39
劍指offer——(5)陣列中出現次數超過一半的數字
三種思路可選。 public class Solution { /* 渣渣暴力求解法:時間複雜度為n!,從0位遍歷陣列,與當前位置的下一位數字判斷是否相等,相等則 count+1,將出現次數用countTemp儲存,每次迴圈比較一下有沒有出現次數更多的數字,
劍指Offer39:陣列中出現次數超過一半的數字
題目: 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。 例如,輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}.由於數字2在這個陣列中出現了5次,超過陣列 長度的一半,因此輸出2 分析: 若一個數組中有一個數字出現了陣列長度的一半以上,則必是這個陣列的中位數
劍指offer28 陣列中出現次數超過一半的數字(java)
題目 中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。 例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 思路 思路一(程式碼略) 先排序,然後找中位數 思路二
《劍指offer》系列 陣列中出現次數超過一半的數字(Java)
連結 牛客: 陣列中出現次數超過一半的數字 題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 思路
劍指offer之找出陣列中出現次數超過一半的數字
找出陣列中出現次數超過一半的數字 歡迎關注作者簡書 csdn傳送門 題目 一個數組中有一個數字的次數超過了陣列的一半,求出這個字元。如:int a[] = {2,3,2,2,2,2,2,5,4,1,2,3},求出超過一半的數字是2 分析 解法一
劍指Offer-39 陣列中出現次數超過一半的數字
題目: 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 解答: # -*- coding:utf-8 -*- cl
(劍指offer)陣列中出現次數超過一半的數字
時間限制:1秒 空間限制:32768K 熱度指數:248291 本題知識點: 陣列 題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。
【演算法】陣列中出現次數超過一半的數字
面試題39:陣列中超過一半的數字 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1, 2, 3, 2, 2, 2, 5, 4, 2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。 解法1 數字超出一半
劍指offer題解(陣列中出現次數超過一半的數字)
題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 解題思路 先找到出現次數最多
演算法風暴第1篇-陣列中出現次數超過一半的數字
用頭腦風暴學演算法,對於一個問題,我們不只是要解決它,還要去思考有什麼好的方法,差的方法去解決,甚至是一些錯誤的但可以提供思想借鑑的方法。 此問題“陣列中出現次數超過一半的數字”是一道非常經典的演算法題,我把它放在演算法風暴系列第一篇來解析,探討學習一個演算法
劍指offer----陣列中出現次數超過一半的數字
陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 思路一:排序 將數組裡元素從排序,然後用中間元素判
劍指offer——陣列中出現次數超過一半的數字(39題)
題目:陣列中有一個字出現的次數超過陣列長度的一半,請找出這個數字。例如,輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。 解題思想:一定要緊緊抓住輸出數字出現的次數超過陣列長度的一半,這一特性。
劍指offer-陣列中出現次數超過一半的數字(陣列)
題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。 看到這個就想到了c++中的map,C++中map提供的是一種鍵值對容器
統計陣列中出現次數超過一半的數字
題目描述 陣列中有一個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入一個長度為9的陣列{1,2,3,2,2,2,5,4,2}。由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。如