所有题目都采用python进行解答,希望可以一起交流!!
寻找消失的数字
- 给定一个整数数组, 其中每个元素[1, n],数组中的数字出现1次或两次,试写一个函数找到没有出现的数字。尽量使用更少的空间和时间。
- 例如: 输入[4,3,2,7,8,2,3,1] 输出[5,6]
有两种方法,最简单就是循环判断,但是时间复杂度高
!!! in这个是O(n)的时间复杂度,程序如下
def find_num(num):
# 时间复杂度 O(n^2)
num_list = []
for i in range(1, len(num)+1):
if i not in num:
num_list.append(i)
第二种采用绝对值的方法,代码如下:
def find_num(num):
# 时间复杂度 O(n)
for i in range(1, len(num)+1):
index = abs(num[i]) - 1
num[index] = -abs(num[index]) - 1
return [i+1 for i in range(len(num)) if num[i] > 0]
Plus One
例如: 输入 [1,2,3] – 输出 [1,2,4];
输入[9,9,9] – 输出 [1,0,0,0].
def plus_one(num):
# 判断合规
if len(num) == 0:
return False
for i in range(len(num)-1,-1,-1):
num[i] += 1
if num[i] == 10:
num[i] = 0
if i == 0:
num.insert(0,1)
else:
break
return num
寻找枢纽序号
- 此元素所有左边元素等于此元素右边元素之和,返回该元素序号,若不满足返回-1。若有多个满足,返回最左则元素序号
def find_equal(num):
n = len(n)
index_list = []
sum_left = 0
for i in range(1,n):
sum_right = 0
for j in range(i+1,n):
sum_right += num[j]
sum_left += num[i-1]
if (sum_left == sum_right):
index_list.append(i)
return min(index_list)
回文结构
左右字符对称,采用递归的思想进行编写
def hui(s):
if len(s) <= 1:
return True
else:
return s[0] == s[-1] and hui(s[1:-1])
gogogogo
题目的更新可能会有丢丢的慢,因为论文被打回,需要重新修改,不过肯定会坚持的,希望大家在寒假也好好进步!!再次gogogo,加油!!
如果有问题,欢迎留言,一起交流,如果有疑惑、迷茫,也可以留言或者邮箱我。