第一周
1-成绩排序
题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。
输入描述:
输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开。
输出描述:
按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开
示例1
输入 3 0 fang 90 yang 50 ning 70 输出 fang 90 ning 70 yang 50
import sys
while True:
try:
n = int(input())
flag = int(input())
student = []
for i in range (n):
student.append(input().split())
res = sorted(student,key = lambda x : int(x[1]),reverse = 1 - flag)
for r in res:
print(r[0]+' '+r[1])
except:
break 2-二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
示例1
输入 7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]] 输出 true
class Solution:
# array
def Find(self, target, array):
# write code here
s = 0
e = len(array) - 1
while (e>=0) and (s<= len(array[0]) - 1):
if array[e][s] < target: s += 1
elif array[e][s] > target : e -= 1
else: return True
return False 3-斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<39
示例1
输入 4 输出 3
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
if n <= 1: return n
res,n1,n2 = 0,0,1
for i in range(2,n+1):
res = n1 + n2
n1 = n2
n2 = res
return res 第二周
1-输入整型数组和排序标识,对其元素按照升序或降序进行排序
输入整型数组和排序标识,对其元素按照升序或降序进行排序(一组测试用例可能会有多组数据)
本题有多组输入,请使用while(cin>>)处理
输入描述:
第一行输入数组元素个数
第二行输入待排序的数组,每个数用空格隔开
第三行输入一个整数0或1。0代表升序排序,1代表降序排序
输出描述:
输出排好序的数字
示例1
输入 8 1 2 4 9 3 55 64 25 0 5 1 2 3 4 5 1 输出 1 2 3 4 9 25 55 64 5 4 3 2 1
import sys
while True:
try:
n = int(input())
arr = list(map(int, input().split()))
flag = int(input())
arr.sort()
if flag == 1: #从小到大输出,就把排序好后的数组倒置
arr.reverse()
print(" ".join(map(str,arr)))
except:
break 2-字符串排序
编写一个程序,将输入字符串中的字符按如下规则排序。
规则 1 :英文字母从 A 到 Z 排列,不区分大小写。
如,输入: Type 输出: epTy
规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。
如,输入: BabA 输出: aABb
规则 3 :非英文字母的其它字符保持原来的位置。
如,输入: By?e 输出: Be?y
注意有多组测试数据,即输入有多行,每一行单独处理(换行符隔开的表示不同行)
输入描述:
输入字符串
输出描述:
输出字符串
示例1
输入 A Famous Saying: Much Ado About Nothing (2012/8). 输出 A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).
# -*- coding:utf-8 -*-
while True:
try:
s = input()
tmp = list(s)#将字符串变为list方便操作
s1 = list(filter(lambda x:x.isalpha(),list(s))) #把非字母全部过滤保存到s1
s1.sort(key = str.upper) #排序
cnt = 0
for i in range(len(tmp)):
if tmp[i].isalpha():#如果是字母就在tmp对应位置替换一下
tmp[i] = s1[cnt]
cnt += 1
print("".join(tmp))
except:
break 3-最短排序
对于一个无序数组A,请设计一个算法,求出需要排序的最短子数组的长度。
给定一个整数数组A及它的大小n,请返回最短子数组的长度。
测试样例:
[1,5,3,4,2,6,7],7 返回:4
# -*- coding:utf-8 -*-
class ShortSubsequence:
def findShortest(self, A, n):
# write code here
B = sorted(A)
l,r = 0,n-1
while l < n and A[l] == B[l]:
l += 1
while r >= l and A[r] == B[r]:
r -= 1
return r - l + 1 


京公网安备 11010502036488号