当前位置: 首页 > news >正文

Python作业答疑_6.22~6.25

一、Python 一班

1. 基数分割列表

1.1 问题描述

给定一无序数列,把数列的第一个数字当成基数,让数列中基数小的数字排在数列前面,比基数大的数字排在数列的后面。

1.2 问题示例

如数列:num=[4,1,8,3,9,2,10,7]。基数为 4,排序后 num=[1,3,2,4,8,9,10,7]

1.3 问题提示

可以使用左右指针方案。

1.4 编码实现
num = [4, 1, 8, 3, 9, 2, 10, 7]
# 基数
base_num = num[0]
# 左指针
left = 0
# 右指针
right = len(num) - 1
while left < right:while num[right] > base_num and right > left:right -= 1while num[left] < base_num and right > left:left += 1# 交换num[left], num[right] = num[right], num[left]
print(num)

2. 回旋镖的数量

2.1 问题描述

在平面中给定n个点,每一对点都是不同的,回旋镖是点的元组(i,j,k),其中,点i和点j之间的距离与点i和点k之间的距离相同(i,j,k的顺序不同,为不同元组)。找到回旋镖的数量。n最多为500,并且点的坐标都在[-10 000,10 000]范围内。

2.2 问题示例

输入[[0,0],[1,0],[2,0]],输出2,两个回旋镖是[[1,0],[0,0],[2,0]]和[[1,0],[2,0],[0,0]]。

2.3 问题提示

关键是求解出两个点之间的距离。

2.4 编码实现
def getDistance(a,b):dx = a[0] - b[0]dy = a[1] - b[1]return dx * dx + dy * dydef number0fBoomerangs(points):# 参数points:整数列表#返回整数if points == None:return 0ans = 0for i in range(len(points)):disCount = {}for j in range(len(points)):if i == j:continuedistance = getDistance(points[i],points[j])count = disCount.get(distance,0)disCount[distance] = count + 1for distance in disCount:ans += disCount[distance] * (disCount[distance] - 1)return ansn = [[0,0],[1,0],[2, 0]]
print("输入:",n)
print("输出:",number0fBoomerangs(n))

3. 合并排序数组

3.1 问题描述

合并两个排序的整数数组A和B,变成一个新的排序数组。

3.2 问题示例

输入[1,2,3]及元素个数3,输入[4,5]及元素个数2,输出[1,2,3,4,5],经过合并新的数组为[1,2,3,4,5]。输入[1,2,5]及元素个数3,输入[3,4]及元素个数2,输出[1,2,3,4,5],经过合并新的数组为[1,2,3,4,5]。

3.3 编码实现
a = [1, 4, 6]
b = [3, 5]
c = []
i = 0
j = 0
while i < len(a) and j < len(b):if a[i] < b[j]:c.append(a[i])i += 1else:c.append(b[j])j += 1
while i < len(a):c.append(a[i])i += 1
while j < len(b):c.append(b[j])j += 1
print(c)

二、Python 二班

1. 构造矩形

1.1 问题描述

给定一个矩形大小,设计其长(L)宽(W),使其满足如下要求:

  • 矩形区域大小需要和给定目标相等;
  • 宽度W不大于长度L,即L≥W
  • 长和宽的差异尽可能小;
  • 返回设计好的长度L和宽度W。
1.2 问题示例

输入为4,输出为[2,2],目标面积为4,所有可能的组合有[1,4][2,2][4,1][2,2]是最优的,L=2,W=2

1.3 问题提示

给定区域面积不超过10 000 000,而且是正整数,页面宽度和长度必须是正整数。

1.4 编码实现

方案一:两头向中思路,求差值最小的一对长和宽

area = int(input("矩形大小:"))
wi = 1
le = area
c = le-wi
for i in range(1, area + 1):le = area // iif le - i < c and le >= i and le * i == area:wi = ic = le - i
print(int(area / wi), wi)

方案二:中间开始,试探查找 。

import math
area = int(input("矩形大小:"))
w = int(math.sqrt(area))
while area % w != 0:w -= 1
print(area // w, w)

2. 两个排序数组合的第k小元素

2.1 问题描述

给定两个排好序的数组A,B,定义集合sum=a+b,其中a来自数组A,b来自数组B,求sum中第k小的元素。

2.2 问题示例

给出A=[1,7,11]B=[2,4,6]sum=[3,5,7,9,11,13,13,15,17],当k=3,返回7;当k=4,返回9;当k=8,返回15

2.3 问题提示

最简单的方案,2 个列表中的数字相乘组成新的列表,再排序。

2.4 编码实现
k = int(input("位置"))
A = [1, 7, 11]
B = [2, 4, 6]
s = []
for i in range(len(A)):for j in range(len(B)):s.append(A[i] + B[j])
s.sort()
print(s[k - 1])

三、Python 三班

1. 首字母大写

1.1 问题描述

输入一个英文句子,将每个单词的首字母改成大写

1.2 问题示例

输入s="i want to go home",输出"I Want To Go Home"。输入s="we want to go to school",输出"We Want To Go To School"

1.3 问题提示

可以使用 split分割字符串,取出首字母后转换成大写(可以使用字符串的 upper()方法把字母转成大写)。

1.4 编码实现
s = "i want to go home"
lst = s.split(" ")
print(lst)
for i in range(len(lst)):lst[i] = lst[i][0].upper()+lst[i][1:]
print(" ".join(lst))

2. 七进制

2.1 问题描述

给定一个整数,返回其七进制的字符串表示。

2.2 问题示例

输入num=100,输出202。输入num=7,输出10

2.3 问题提示

求解七进制方法:把数字不停除以 7。再把余数重新连接起来。

如求解 100 的 七进制:

  • 100 除以 7 ,余数为 2,商为 14.

  • 14 再除以 7,余数为 0,商为 2

  • 2 再除了 7 ,余数为 2,商为 0

    从后向前,把余数连接起来:202

2.4 编码实现
num=7
res=""
while num>0:res+=str(num % 7)num=num // 7
print(res[::-1])

3. 查找数组中没有出现的所有数字

3.1 问题描述

给定一个整数数组,其中1≤a[i]≤n(n为数组的大小),一些元素出现两次,其他元素出现一次。找到[1,n]中所有未出现在此数组中的元素。

3.2 问题示例

输入[4,3,2,7,8,2,3,1],输出[5,6]。

3.3 问题提示

逐一查找!

3.4 编码实现
num = [4, 3, 2, 7, 8, 2, 3, 1]
for i in range(1,len(num)+1):if i not in num:print(i)

相关文章:

  • debianubuntu的nvidia驱动升级
  • unity 2d 入门 飞翔小鸟 下坠功能且碰到地面要停止 刚体 胶囊碰撞器 (四)
  • APM Server监控
  • cs制作木马和钓鱼邮件
  • C实现的双向链表队列
  • 【Docker】Swarm的ingress网络
  • (分类)KNN算法- 参数调优
  • TimeGPT:时间序列预测模型实例
  • 「Swift」取消UITableView起始位置在状态栏下方开始
  • 10、外观模式(Facade Pattern,不常用)
  • Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
  • 网站提示不安全?
  • vue.js el-table 动态单元格列合并
  • 【改进YOLOv8】融合高效网络架构 CloAtt的焊缝识别系统
  • Linux下Redis安装及配置
  • Android 控件背景颜色处理
  • echarts花样作死的坑
  • emacs初体验
  • python大佬养成计划----difflib模块
  • React Native移动开发实战-3-实现页面间的数据传递
  • REST架构的思考
  • RxJS: 简单入门
  • SwizzleMethod 黑魔法
  • Terraform入门 - 1. 安装Terraform
  • Vue官网教程学习过程中值得记录的一些事情
  • vue学习系列(二)vue-cli
  • 基于axios的vue插件,让http请求更简单
  • 力扣(LeetCode)21
  • 巧用 TypeScript (一)
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 如何实现 font-size 的响应式
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 一些css基础学习笔记
  • 用mpvue开发微信小程序
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 原生js练习题---第五课
  • 转载:[译] 内容加速黑科技趣谈
  • 正则表达式-基础知识Review
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • !$boo在php中什么意思,php前戏
  • (07)Hive——窗口函数详解
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (苍穹外卖)day03菜品管理
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)计算机毕业设计大学生兼职系统
  • (九)信息融合方式简介
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (一)80c52学习之旅-起始篇
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)