1. 程式人生 > >Lint_Code_最多有多少個點在一條直線上

Lint_Code_最多有多少個點在一條直線上

問題描述:

給出二維平面上的n個點,求最多有多少點在同一條直線上。

樣例:給出4個點:(1, 2)(3, 6)(0, 0)(1, 3)一條直線上的點最多有3個。

演算法思想:點和點在不在一條直線上,關鍵兩點之間的斜率是否相同。開始自己寫了一些,但過於理想化,且複雜,沒有考慮全面,並且沒有考慮到使用map集合。最後這種還是從從網上百度出來的:

    public int maxPoints(Point[] points) {
        
        if(points==null||points.length==0){
            return 0;
        }
        
        int max=1;
        //用到了map集合
        HashMap<Double,Integer> map=new HashMap<Double,Integer>();
        
        for(int i=0;i<points.length;i++){
            map.clear();
           
            map.put((double)Integer.MIN_VALUE, 1);
            
            int dou=0;
            
            for(int j=i+1;j<points.length;j++){
                if(points[j].x==points[i].x&&points[j].y==points[i].y){
                    dou++;
                }else{
                    double key=(points[j].x-points[i].x==0?(double)Integer.MAX_VALUE:0.0+(double)(points[j].y-points[i].y)/(double)(points[j].x-points[i].x));
                    if(map.containsKey(key)){
                        map.put(key, map.get(key)+1);
                    }else{
                        map.put(key,2);
                    }
                }
            }
            for(int temp:map.values()){
                if((temp+dou)>max){
                    max=temp+dou;
                }
            }
            
        }

        return max;
    }


相關推薦

Lint_Code_多少線上

問題描述: 給出二維平面上的n個點,求最多有多少點在同一條直線上。 樣例:給出4個點:(1, 2), (3, 6), (0, 0), (1, 3)。一條直線上的點最多有3個。 演算法思想:點和點在不在一條直線上,關鍵兩點之間的斜率是否相同。開始自己寫了一些,但過於理

lintcode,多少線上

給出二維平面上的n個點,求最多有多少點在同一條直線上。 樣例 給出4個點:(1, 2), (3, 6), (0, 0), (1, 3)。 一條直線上的點最多有3個。 解題思路:從第一個點開始遍歷,每次和其他所有點對比,判斷是否是重合點,以及是否是同一x值

給定一個二維平面,平面上 n ,求多少在同一線上

需求:給定一個二維平面,平面上有 n 個點,求最多有多少個點在同一條直線上。 分析思路: 1、將所有點二維座標化,即定義出所有點的x,y座標值 2、遍歷出所有取出兩點的情況(不考慮先後順序),根據任意兩點都確定一條直線,直線引數為k斜率,b與y軸交點的縱座標(此時x=0),將他們放入一個

多少在同一線上

 給出二維平面上的n個點,求最多有多少點在同一條直線上。 樣例 給出4個點:(1, 2), (3, 6), (0, 0), (1, 3)。 一條直線上的點最多有3個。 import java.util.HashMap; import java.util.Map; impor

給定平面上的n,求多少共線

給定一個二維平面上的n個點,找出同一條直線上的最大點數。 解法: 窮舉,注意斜率不適用float作為鍵,精度損失。 class Solution { public: int gcd(int x,int y) { //求最大公約數 i

[LeetCode] 340. Longest Substring with At Most K Distinct Characters K不同字符的長子串

sub site result .com con 題目 i++ ++ efault Given a string, find the length of the longest substring T that contains at most k distinct cha

某產品使用A、B、C三種零件組裝而成,三種零件分別由三相應的零件車間生產。零件組裝則由裝配車間完成,裝配車間分別存放三種零件的貨架S1,S2,S3,分別可存放最多mA零件,nB零件,kC

某產品使用A、B、C三種零件組裝而成,三種零件分別由三個相應的零件車間生產。零件組裝則由裝配車間完成,裝配車間有三個分別存放三種零件的貨架S1,S2,S3,分別可存放最多m個A零件,n個B零件,k個C零件,每件產品分別使用A,B,C三種零件各一個裝配而成,請採

[LeetCode] Longest Substring with At Most Two Distinct Characters 不同字元的長子串

Given a string S, find the length of the longest substring T that contains at most two distinct characters.For example,Given S = “eceba”,T is “ece” which

[LeetCode] Longest Substring with At Most K Distinct Characters K不同字元的長子串

Given a string, find the length of the longest substring T that contains at most k distinct characters. For example, Given s = “eceba” and k = 2, T is

parttion by ~~~針對某個欄位或欄位重複,資料只取前n。問題例子:1.主評論下的評論按著 時間正序隻取前5 2.獲取最新登入記錄......

分組目前已知partition by、group by partition by用於給結果集分組分割槽,如果沒有指定那麼它把整個結果集作為一個分組,最後顯示具體資料 group by:通過所查詢的資料的某一欄位或屬性進行分組,最後顯示組資料,而不是具體資料,因為select 後面的所有列中,沒有使用聚合函

Google 面試題 10 | k不同字元的長子字串

題目描述 給定一個字串,找到最長的包含最多k個不同字元的子串,輸出最長子串的長度即可。 Example: 給出字串”eceba”,k = 2 輸出答案3,最長包含最多2個不同字元的子串為”ece”。 官方題解(並沒有看懂): 最暴力的做法是窮舉所有

給定個數組,它的第 i 元素是支給定股票第 i 天的價格。 如果你只允許完成筆交易(即買入和賣出支股票),設計一個算法來計算你所能獲取的大利潤。

pan stat 給定 arr 註意 turn 大於 交易 nbsp 給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。 如果你最多只允許完成一筆交易(即買入和賣出一支股票),設計一個算法來計算你所能獲取的最大利潤。 註意你不能在買入股票前賣出股票。 示例 1

雙色球--2號碼相同的內幕

str 數組 標題 string 內幕 exti continue print use 雖然是標題黨,但是功能卻是能讓雙色球最多只有2個球號碼相同,不知道沒中過雙色球或者只有2個雙色球的小夥伴是不是買了假的雙色球了啊。 代碼如下: class Doubleball{ pub

【XSY1295】calc nn邊無向連通圖計數 prufer序列

ring pre end ctime 節點 splay 按順序 sin algorithm 題目大意   求\(n\)個點\(n\)條邊的無向連通圖的個數   \(n\leq 5000\) 題解   顯然是一個環上有很多外向樹。   首先有一個東西:\(n\)個點選\(k\

添加 Class 屬性無效,原因:

info AC 技術 分享圖片 bubuko back fff 分享 css CSS樣式如下: 解決辦法:去掉 “ . ” 添加 Class 屬性無效,原因:多了個 點

[Al]演算法:n級階梯,每次走1步或2步,多少種走法

@Filename : floor.c * @Author : Mr.Zhong * @Date : 2018-11-02 * @Description: n級階梯,每次走一步或2步,最多有多少種走法 * @Analysis :

zcmu4959(容易忽略)

4959: ly的新鬧鐘 Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Description 最近ly買了一個新鬧鐘,每天盯著這個鬧鐘看,越看越喜歡…為了不讓ly浪費時間

假設狗年1歲,第3年和第5年生出小狗,第六年死亡,計算第n年狗的個數(不考慮公母)

2種演算法 先定義一個狗的class class Dog: year = 1 def is_dead(self): return True if self.year >= 6 else False def add(self):

Mybatis一對隻能查出資料解決策略

<resultMap id="menuModelMap" type="com.yyzq.springboot.model.MenuModel" > <id column="id" property="id" jdbcType="BIGINT" />