1、最大公约数
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 求出a、b的最大公约数。
# @param a int
# @param b int
# @return int
#
class Solution:
def gcd(self , a , b ):
# write code her
if b == 0:
return a
else:
return self.gcd(b, a%b)
2、数字在升序数组中出现的次数
解题思路:1、遍历data,若有和k一样的数,num加一。
2、python中现成函数
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
num = 0
for i in data:
if i == k:
num += 1
return num
# -*- coding:utf-8 -*-
class Solution:
def GetNumberOfK(self, data, k):
# write code here
return data.count(k)
3、二维数组中的查找
解题思路:从数组的右上角开始查找,若右上角的数大于target,则排除当前列,否则排除当前行。
class Solution:
def Find(self , target: int, array: List[List[int]]) -> bool:
# write code here
rows = len(array)
cols = len(array[0])
if rows> 0 and cols > 0:
row = 0
col = cols - 1
while row < rows and col >= 0:
if target == array[row][col]:
return True
elif target>array[row][col]:
row += 1
else:
col -= 1
return False
4、数组中重复的元素
解题思路:首先数组的长度是为n,取值范围0n-1,与此对应下标也是0n-1,若数组不包含重读元素,那么numbers[i] = i。若包含重复元素,那么一个元素可能包含多个下标,所以方法是对数组遍历,判断numbers[i] 和 i是否相等,若不等,则判断numbers[numbers[i]]和numbers[i],若相等,则返回numbers[i],若不等则交换,然后一直遍历。直到numbers[numbers[i]]和numbers[i]相等。
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param numbers int整型一维数组
# @return int整型
#
class Solution:
def duplicate(self , numbers ):
# write code here
n = len(numbers)
for i in range(n):
while numbers[i] != i:
j = numbers[i]
if numbers[j] == j:
return j
else:
numbers[i] = numbers[j]
numbers[j] = j
return -1
5、旋转数组的最小数字
解题思路:二分法
# -*- coding:utf-8 -*-
class Solution:
def minNumberInRotateArray(self, rotateArray):
# write code here
left = 0
right = len(rotateArray)-1
while left < right:
mid = (left+right)//2
if rotateArray[mid] < rotateArray[right]:
right = mid
else:
left = mid+1
if rotateArray[mid] == rotateArray[right]:
return self.minInorder(rotateArray, left, right)
return rotateArray[left]
def minInorder(self,array,left,right):
result = array[left]
for i in range(right+1):
if array[i]<result:
result = array[i]
return result
6、数组中出现次数超过一半的数
解题思路:摩尔投票
# -*- coding:utf-8 -*-
class Solution:
def MoreThanHalfNum_Solution(self, numbers):
# write code here
rate = 0
for i in numbers:
if rate == 0:
res = i
if res == i:
rate += 1
else:
rate -=1
return res