数值的整数次方
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解题思路:
0应该不算浮点数的,若只是负数,在python的计算中也没有问题
代码:
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
return base**exponent
解题思路:
1 当指数为负数的时候
# -*- coding:utf-8 -*-
from collections import deque
class Solution:
def reOrderArray(self, array):
# write code here
odd = deque()
l = len(array)
for i in range(l):
if array[l-i-1]%2 != 0:
odd.appendleft(array[-i-1])
if array[i] %2==0:
odd.append(array[i])
return list(odd)
2 当底数为零切指数为负数的情况
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
if base == 0:
return 0
exp = abs(exponent)
result = 1.0
for i in range(exp):
result *= base
if exponent>0:
return result
else:
return 1/result
调整数组顺序使奇数落在偶数前面
题目描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
解题思路:
法1 :设置两个数组
# -*- coding:utf-8 -*-
class Solution:
def reOrderArray(self, array):
# write code here
odd = []
even = []
for i in array:
if i % 2 ==0:
even.append(i)
else:
odd.append(i)
return odd+even
法2 :采用两指针分别从首尾出发,当头指针遇到一个偶数,并且尾指针遇到一个奇数时,交换两指针的数字,直到两指针相遇。时间复杂度为O(n),(类似于快排)
代码:
# -*- coding:utf-8 -*-
from collections import deque
class Solution:
def reOrderArray(self, array):
# write code here
odd = deque()
l = len(array)
for i in range(l):
if array[l-i-1]%2 != 0:
odd.appendleft(array[-i-1])
if array[i] %2==0:
odd.append(array[i])
return list(odd)