Java實現--給定2D平面上的n個點,找出位於同一直線上的最大點數。
//這是原文。
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.
//預設給出的建構函式
/**
* Definition for a point.
* class Point {
* int x;
* int y;
* Point() { x = 0; y = 0; }
* Point(int a, int b) { x = a; y = b; }
* }
*/
理一下思路(窮舉):
同一直線上,分兩種情況:
1.斜率(Slope)相同
2.有重複的點
public class Solution {
public int maxPoints(Point[] points) {
if(points.length == 0){
return 0;
}
if( points.length <= 2 ){
return points.length;
}
int max = 2 ;
for( int i = 0 ; i < points.length ; i++ ){
int samePosition = 0; //重複位置的點
int sameSlope = 1; //斜率相同的點,第一個點
for( int j = i + 1 ; j < points.length ; j++ ){
//判斷是否為重複位置的點
int x_distance1 = points[j].x - points[i].x;
int y_distance1 = points[j].y - points[i].y;
if( x_distance1 == 0 && y_distance1 == 0 ){
samePosition++;
} else {
sameSlope++;//第二個點,所以可以直接++
for(int k = j + 1 ; k < points.length ; k++ ){
//當判斷第3個點的時候可能有人會有疑問為什麼不用繼續判斷是否跟第二個點為相同的點
//這是不可行的,因為在判斷斜率是否相同的時候又會繼續自增一次,會重複加多一次。
if ( x_distance1 * y_distance2 == x_distance2 * y_distance1 ) {
sameSlope++;
}
}
}
if(max < (samePosition + sameSlope)){
max = samePosition + sameSlope;
}
sameSlope = 1;
}
}
return max;
}
}
相關文章
- n個骰子的點數
- 小於n的最大數
- 給定一個n,輸出從1到n的整數
- JZ-074-n 個骰子的點數
- 給定陣列中找到最大的兩個數陣列
- 給定一個大小為 n 的陣列,找到其中的眾數。眾數是指在陣列中出現次數大於 ⌊ n/2 ⌋ 的元素。陣列
- 兩個燃點,引爆線上教育平臺數智化
- 線上教育平臺開發的幾個關鍵點
- 關於《給部落格園的幾點現實建議》
- Java中查詢給定數字下最大素數的2種方法Java
- vue實現單點登入的N種方式Vue
- python實現給定一個數和陣列,求陣列中兩數之和為給定的數Python陣列
- 【窮舉】Max Points on a Line平面上共線的點
- [每日一題] 第十六題:n個骰子的點數每日一題
- 基於Netty實現的WebSocket聊天室--支援多人同時線上及定時心跳檢測NettyWeb
- 堆的定義、特點及實現
- 實時熱點網站有哪些?3個超實用的熱點網站,輕鬆找熱點網站
- 給部落格園的幾點現實建議
- 基於Java+SpringBoot+Mysql實現的點卡各種卡寄售平臺功能設計與實現三JavaSpring BootMySql
- 基於Java+SpringBoot+Mysql實現的點卡各種卡寄售平臺功能設計與實現四JavaSpring BootMySql
- 用一個巨集實現求兩個數中的最大數
- 0011 刪除連結串列的倒數第N個節點
- 關於HDFS應知應會的N個問題 | 技術點
- App上看到就忍不住點的小紅點是如何實現的?APP
- CSS如何設定不可點選?CSS如何設定不可點選的實現方法CSS
- 刪除連結串列中等於給定值 val 的所有節點。
- 劍指Offer-17-列印從1到最大的n位數-Java程式碼實現(兩種思路)Java
- Java斷點續傳(基於socket與RandomAccessFile的簡單實現)Java斷點randomMac
- 盤點JAVA中基於CAS實現的原子類, 你知道哪些?Java
- 19. 刪除連結串列的倒數第 N 個結點
- 定點數的編碼表示
- 今日頭條程式設計題1 找"最大"點程式設計
- 找二維陣列中的鞍點:即該位置上的元素在該行最大,在該列最小(也可能沒有鞍點)陣列
- 基於webrtc實現點對點桌面分享Web
- 基於SpringBoot如何實現一個點贊功能?Spring Boot
- 基於 Laravel 開發的線上點播系 MeEdu beta2 版本上線Laravel
- 今天發現了自己的一個一直都錯誤的觀點
- LeetCode- 19 刪除連結串列的倒數第N個節點LeetCode