平分的直线 牛客网 程序员面试金典 C++ Python
2024-08-31 19:09:50
平分的直线 牛客网 程序员面试金典 C++ Python
题目描述
在二维平面上,有两个正方形,请找出一条直线,能够将这两个正方形对半分。假定正方形的上下两条边与x轴平行。
给定两个vecotrA和B,分别为两个正方形的四个顶点。请返回一个vector,代表所求的平分直线的斜率和截距,保证斜率存在。
测试样例:
[(0,0),(0,1),(1,1),(1,0)],[(1,0),(1,1),(2,0),(2,1)]
返回:[0.0,0.5]
C++
/*
struct Point {
int x;
int y;
Point() :
x(0), y(0) {
}
Point(int xx, int yy) {
x = xx;
y = yy;
}
};*/
class Bipartition {
public:
//run:5ms memory:476k
vector<double> getBipartition(vector<Point> A, vector<Point> B) {
double centerax = (A[0].x+A[1].x+A[2].x+A[3].x)/4.0;
double centeray = (A[0].y+A[1].y+A[2].y+A[3].y)/4.0;
double centerbx = (B[0].x+B[1].x+B[2].x+B[3].x)/4.0;
double centerby = (B[0].y+B[1].y+B[2].y+B[3].y)/4.0;
vector<double> ret;
ret.push_back((centeray-centerby)/(centerax-centerbx));
ret.push_back(centeray- ret[0] * centerax);
return ret;
}
};
Python
# class Point:
# def __init__(self, a=0, b=0):
# self.x = a
# self.y = b
class Bipartition:
def getBipartition(self, A, B):
centerax = (A[0].x+A[1].x+A[2].x+A[3].x)/4.0
centeray = (A[0].y+A[1].y+A[2].y+A[3].y)/4.0
centerbx = (B[0].x+B[1].x+B[2].x+B[3].x)/4.0
centerby = (B[0].y+B[1].y+B[2].y+B[3].y)/4.0
ret = []
ret.append((centeray-centerby)/(centerax-centerbx))
ret.append(centeray- ret[0] * centerax)
return ret;
最新文章
- SQLSERVER走起 APP隆重推出
- Autodesk正在招聘Civil、Infraworks金牌支持工程师(Premium Support Specialist)
- 如何在IIS7/7.5上配置IISADMPWD
- [bzoj1618][Usaco2008 Nov]购买干草
- iOS:项目中疑难Crash问题集锦
- android:imeOptions属性(转)
- [maven] 常用仓库地址
- 两个在线编写C++代码的网站
- Storm流分组介绍
- jquery 实现table的动态合并列
- unity零基础开始学习做游戏(六)背景给我“滚”~
- python中剔除字典重复项,可以使用集合(set)。
- java HttpClient 忽略证书的信任的实现 MySSLProtocolSocketFactory
- 队列模拟基本操作I
- leetcode1027
- c# 序列化BinaryFormatter、SoapFormatter和XmlSerializer的区别
- windows上测试磁盘io性能
- python中的pop
- iframe页面刷新问题
- 在linux下使用sqlcmd
热门文章
- Elasticsearch(ES)分词器的那些事儿
- 开源的物联网技术平台(Thingsboard)
- 超详细:command not found:scrapy解决办法(Mac下给zsh添加scrapy环境变量)
- Java基础系列(5)- 使用IDEA开发
- Apache AB(1) - 快速使用
- Kubernetes-Pod介绍(四)-Deployment
- 为什么Charles中的中文展示成数字、英文字符串
- 测试开发【提测平台】分享11-Python实现邮件发送的两种方法实践
- java 请求第三方接口 GET\POST 实现方法
- docker采用registry部署简易仓库