1 leetcode50 计算 x 的 n 次幂函数。

实现 pow(xn) ,即计算 x 的 n 次幂函数。

(1)调用库函数

(2)暴力o(N)

(3)分治

xxxxxx.......x   采用两端夹,如果是偶数 y=x的二分之n次方  result=y*y。如果是奇数,x的二分之n次方,result=y*y*x

x(n)->x(n/2)->x(n/4).....x(0)  每次减半,logn

 class Solution(object):
def myPow(self, x, n):
"""
:type x: float
:type n: int
:rtype: float
"""
if not n:
return
if n<:
return / self.myPow(x,-n)
if n%:
return x*self.myPow(x,n-)
return self.myPow(x*x,n/)

非递归

 class Solution(object):
def myPow(self, x, n):
"""
:type x: float
:type n: int
:rtype: float if not n:
return
if n<:
return / self.myPow(x,-n)
if n%:
return x*self.myPow(x,n-)
return self.myPow(x*x,n/)
"""
if n<:
x=/x
n=-n
pow=
while n:
if n&:
pow*=x
x*=x
n>>=
return pow

2 leetcode169 求众数

(1)暴力 两个循环,针对每一个x进行计数,时间复杂度n平方

(2)map,key为元素,value为count

c++版本 时间复杂度0(n) 循环一次 每一次对mapO(1)

 class Solution {
public:
int majorityElement(vector<int>& nums) {
unordered_map<int,int>hash;
int res=;
int len=nums.size();
for(int i=;i<len;i++)
{
hash[nums[i]]++;
if(hash[nums[i]]>len/)
{
res=nums[i];
}
}
return res;
}
};

(3) sort nlogn

(4)分治

先分两部分,left和right,如果right==left,那么总体也是ok,结果就是right/left。如果不相等,比较谁count大

 def majorityElement(self, nums):
if not nums:
return None
if len(nums) == :
return nums[]
a = self.majorityElement(nums[:len(nums)//2])
b = self.majorityElement(nums[len(nums)//2:])
if a == b:
return a
return [b, a][nums.count(a) > len(nums)//2]

最新文章

  1. Asp.Net通过HttpModule实现URL重写
  2. jmeter+ant+jenkins+mac报告优化
  3. 大数相乘nyoj28
  4. IOS 二维码生成
  5. C#winform控制textbox输入只能为数字
  6. ASP.net 探针
  7. 【荐】Redis学习资料汇总
  8. 设置透明navigationBar
  9. Python可视化----------matplotlib.pylot
  10. 第一次作业:扑通扑通 我的IT
  11. Istio
  12. gojs常用API-画布定义
  13. 使用Go语言编写区块链P2P网络(译)(转)
  14. 顺序表的原理与python中的list类型
  15. spring batch (四) Job的配置及配置文件说明介绍
  16. Razor Pages with ASP.NET Core 2
  17. ZOJ_3950_How Many Nines 解题报告及如何对程序进行测试修改
  18. SocketServer源码学习补充
  19. https--&gt;http and http--&gt;https bitransfer
  20. Sum All Numbers in a Range(两数之间数字总和)

热门文章

  1. 后台返回的Json为null的字段不显示的方法
  2. Fiddler抓包工具介绍
  3. 使用postman上传excel文件测试导入excel
  4. PostgreSQL JSON 处理
  5. Windows10 Faster R-CNN(GPU版) 运行 Demo
  6. WinDbg常用命令系列---!handle
  7. 关于异常System.ArgumentException
  8. 使用WinDbg调试入门(用户模式)
  9. 个人Vim配置(即vim目录下vimrc_)
  10. JavaScript高级程序编程(三)