python 笔试题目
背景
记录下最近遇见的笔试题,记录一下,可供大家可以参考,提醒我平时没事可以看看算法的题目,题目如下
题目
1.功能:输入任意一个整数数组,得到想要的数组输出;
(如下是两个case):
1)输入数组:[1,2,3,4,5,7,8] ==>输出数组:[“1->5”,”7->8”]
2)输入数组:[1,4,5,6,9,10]==>输出数组:[“1”,”4->6”,”9->10”]
请理解case中的输出规则,写一个函数实现如上功能;
解析:先理解题目,其实就是数组内的连续数据进行分组,那么有什么可以做,python有groupby可以对数据进行分组,具体写法如下:
from itertools import groupbylst = [1,4,5,6,9,10] # 连续数字
lst_new = []fun = lambda x: x[1] - x[0]
for k, g in groupby(enumerate(lst), fun):l1 = [j for i, j in g] # 连续数字的列表# print(l1)if len(l1) > 1:scop = str(min(l1)) + '->' + str(max(l1)) # 将连续数字范围用"-"连接lst_new.append(scop)else:scop = l1[0]lst_new.append(str(scop))# print("连续数字范围:{}".format(scop))
print(lst_new)
2、给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。
水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。
反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。
示例 1:
输入:[[1,1,0],[1,0,1],[0,0,0]]
输出:[[1,0,0],[0,1,0],[1,1,1]]
解释:首先翻转每一行: [[0,1,1],[1,0,1],[0,0,0]];
然后反转图片: [[1,0,0],[0,1,0],[1,1,1]]
示例 2:
输入:[[1,1,0,0],[1,0,0,1],[0,1,1,1],[1,0,1,0]]
输出:[[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
解释:首先翻转每一行: [[0,0,1,1],[1,0,0,1],[1,1,1,0],[0,1,0,1]];
然后反转图片: [[1,1,0,0],[0,1,1,0],[0,0,0,1],[1,0,1,0]]
解析:先循环列表内部有几个列表,内部的列表先先交换位置,然后再将1,0对换
class Reverse_num(object):def flipAndInvertImage(self, A):for k in range(len(A)):i, j = 0, len(A[k])-1while i < j:A[k][i], A[k][j] = A[k][j], A[k][i]j -= 1i += 1for i in range(len(A[k])):A[k][i] = 0 if A[k][i] == 1 else 1return Areverse_num = Reverse_num()
print(reverse_num.flipAndInvertImage([[1,1,0],[1,0,1],[0,0,0]]))
总结:
除了平时出去散打,也要平时练练基本功,吾辈当自强
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
