中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么找出出現次數超過數組長度一半的元素

發布時間:2020-07-28 10:20:01 來源:億速云 閱讀:208 作者:小豬 欄目:開發技術

這篇文章主要講解了Python怎么找出出現次數超過數組長度一半的元素,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

利用問題的普遍性和特殊性來求解,

代碼如下:

import unittest
from datetime import datetime

class GetFreqNumbersFromList(unittest.TestCase):
 def setUp(self):
  print("\n")
  self.start_time = datetime.now()
  print(f"{self._testMethodName} start: {self.start_time}")

 def tearDown(self):
  self.end_time = datetime.now()
  print(f"{self._testMethodName} end: {self.end_time}")
  exec_time = (self.end_time - self.start_time).microseconds
  print(f"{self._testMethodName} exec_time: {exec_time}")

 def normal_solution(self, _list, _debug=False):
  """
  普遍性解法
  利用字典記錄每個元素出現的次數——然后找出元素出現次數超過數組長度一半的元素
  普遍性解法針對任何次數的統計均適用而不光只是針對出現次數超過數組長度一半的情況
  """
  _target = len(_list) // 2
  _dict = {}
  for _member in _list:
   if _member not in _dict:
    _dict.setdefault(_member, 1)
   else:
    _dict[_member] += 1
  _ret = [_member for _member in _dict if _dict[_member] > _target]
  if _debug:
   print(_ret)
  return _ret

 def specific_solution(self, _list, _debug=False):
  """
  特殊性解法
  假設有兩個元素出現的次數都超過數組長度一半就會得出兩個元素出現的次數超出了數組長度的矛盾結果——所以超過數組長度一半的元素是唯一的
  排序后在數組中間的一定是目標解
  特殊性解法只能針對元素出現次數超過數組長度一半的情況
  """
  _list.sort()
  if _debug:
   print(_list[len(_list) // 2])
  return _list[len(_list) // 2]

 def test_normal_solution(self):
  actual_result = self.normal_solution([2,2,2,2,2,2,1,1,1,1,1], False)
  self.assertEqual(actual_result[0], 2)

 def test_specific_solution(self):
  actual_result = self.specific_solution([2,2,2,2,2,2,1,1,1,1,1], False)
  self.assertEqual(actual_result, 2)

if __name__ == "__main__":
 # 找出出現次數超過數組長度一半的元素
 suite = unittest.TestSuite()
 suite.addTest(GetFreqNumbersFromList('test_normal_solution'))
 suite.addTest(GetFreqNumbersFromList('test_specific_solution'))
 runner = unittest.TextTestRunner()
 runner.run(suite)

測試結果:

Python怎么找出出現次數超過數組長度一半的元素

補充知識:Python 用積分思想計算圓周率

早上起來突然想求圓周率,1單位時圓的面積。

代碼如下:

from math import pow, sqrt

def calc_circle_s_with(r, dy, x_slices):
  x_from_start_to_cc = sqrt(1 - pow(dy, 2))
  dx = x_from_start_to_cc / x_slices
  x_to_edge = 1 - x_from_start_to_cc
  quarter_circle_s = 0
  while x_to_edge < 1:
    rect_s = dy * dx
    quarter_circle_s += rect_s
    x_to_edge = x_to_edge + dx
    dy = sqrt(1 - pow((1 - x_to_edge), 2))
  circle_s = 4 * quarter_circle_s
  print(circle_s)

calc_circle_s_with(1, 0.0001, 10000000)

運行結果接近3.1415926,dy傳的越小,x_slices傳的越大,就越接近。

半徑為:1

初始小矩形到圓周的距離:1 - x_from_start_to_cc

其中dy代表四分之一圓中初始小矩形的高度,x_slices代表小矩形的寬度:(1 - x_from_start_to_cc) / x_slices

四分之一圓的面積積分為:quarter_circle_s

看完上述內容,是不是對Python怎么找出出現次數超過數組長度一半的元素有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

赣榆县| 黔西| 竹溪县| 牙克石市| 甘孜| 息烽县| 琼结县| 河南省| 逊克县| 乐都县| 武宁县| 甘德县| 西丰县| 武冈市| 嘉鱼县| 罗甸县| 建昌县| 青岛市| 项城市| 大渡口区| 山阳县| 鸡泽县| 绍兴县| 莱西市| 长泰县| 宁波市| 翁牛特旗| 泰顺县| 深泽县| 南郑县| 上林县| 福安市| 肃南| 九台市| 专栏| 大竹县| 嵊州市| 大安市| 晋州市| 南乐县| 岗巴县|