LeetCode每日一題--973. 最接近原點的 K 個點
題目:跳轉至 973. 最接近原點的 K 個點
我們有一個由平面上的點組成的列表 points。需要從中找出 K 個距離原點 (0, 0) 最近的點。
(這裡,平面上兩點之間的距離是歐幾里德距離。)
你可以按任何順序返回答案。除了點座標的順序之外,答案確保是唯一的。
示例 1:
輸入:points = [[1,3],[-2,2]], K = 1
輸出:[[-2,2]]
解釋:
(1, 3) 和原點之間的距離為 sqrt(10),
(-2, 2) 和原點之間的距離為 sqrt(8),
由於 sqrt(8) < sqrt(10),(-2, 2) 離原點更近。
我們只需要距離原點最近的 K = 1 個點,所以答案就是 [[-2,2]]。
class Solution {
public:
vector<vector<int>> kClosest(vector<vector<int>>& points, int K) {
}
};
思路:
很明顯的排序問題,第一反應挨個遍歷,每次計算兩個數的平方和,取其中K個最小值。
class Solution {
public:
vector<vector<int>> kClosest(vector<vector<int>>& points, int K) {
vector<vector<int>> res(K,vector<int>());
vector<long> length(K,0);
int len=points.size();
if(len==0)
return res;
int count=0;
for(int i=0;i<len;++i){
vector<int> temp(2);
temp[0]=points[i][0];
temp[1]=points[i][1];
long psquare=pow(points[i][0],2)+pow(points[i][1],2);
if(res.empty() || i<K){
res[count]=temp;
length[count++]=psquare;
}
else{
auto maxlength=max_element(length.begin(),length.end());
long maxvalue=length[maxlength-length.begin()];
if(maxvalue>psquare){
res[maxlength-length.begin()]=temp;
length[maxlength-length.begin()]=psquare;
}
}
}
return res;
}
};
今天的中等題那麼簡單呢,暴力解決,開開心心通過測試用例,懷抱著一絲不安點選提交,果然超時了。
再一看題解,寥寥幾行,還挺熟悉,這不是前天剛用過的sort嗎。如何學到下次就能用到是一個永恆的課題。
class Solution {
public:
vector<vector<int>> kClosest(vector<vector<int>>& points, int K) {
sort(points.begin(),points.end(),[this](vector<int> x,vector<int> y){
return x[0]*x[0]+x[1]*x[1]<y[0]*y[0]+y[1]*y[1];
});
vector<vector<int>> res(points.begin(),points.begin()+K);
return res;
}
};
相關文章
- [演算法相關]973. 最接近原點的 K 個點演算法
- 973. K Closest Points to Origin(Leetcode每日一題-2020.11.09)LeetCode每日一題
- leetcode 658.找到K個最接近的元素 JavaLeetCodeJava
- [每日一題] 第十三題:連結串列中倒數第k個節點每日一題
- [每日一題] 第十六題:n個骰子的點數每日一題
- 找到k個最接近x的元素
- LeetCode每日一題:連結串列的中間結點(No.876)LeetCode每日一題
- 模型的一個點顯示在原點模型
- [每日一題] 第二十題:最小的k個數每日一題
- leetcode每日一題—19.刪除連結串列的倒數第N個結點LeetCode每日一題
- 【LeetCode】每日一題129:求根到葉子節點數字之和LeetCode每日一題
- leetcode每日一題LeetCode每日一題
- LeetCode每日一題:刪除連結串列中的節點(No.237)LeetCode每日一題
- 每日一題 - 劍指 Offer 54. 二叉搜尋樹的第k大節點每日一題
- Leetcode每日一題(1)LeetCode每日一題
- LeetCode每日一題: 位1的個數(No.191)LeetCode每日一題
- LeetCode每日一題:sort colorsLeetCode每日一題
- LeetCode每日一題: 三個數的最大乘積(No.628)LeetCode每日一題
- LeetCode每日一題: 最後一個單詞的長度(No.58)LeetCode每日一題
- LeetCode刷題的一點個人建議和心得LeetCode
- LeetCode-116-填充每個節點的下一個右側節點指標LeetCode指標
- LeetCode-117-填充每個節點的下一個右側節點指標 IILeetCode指標
- LeetCode117-填充每個節點的下一個右側節點指標 IILeetCode指標
- 一個浮點數計算的問題
- LeetCode 每日一題「判定字元是否唯一」LeetCode每日一題字元
- TRW2k一點點小小的經驗。 (290字)
- LeetCode每日一題:合併兩個有序陣列(No.88)LeetCode每日一題陣列
- LeetCode每日一題:Nim遊戲(No.292)LeetCode每日一題遊戲
- LeetCode每日一題: 找不同(No.389)LeetCode每日一題
- LeetCode每日一題: 移除元素(No.27)LeetCode每日一題
- LeetCode題解(Offer22):尋找連結串列中倒數第k個節點(Python)LeetCodePython
- 盤點一個Pandas實戰需求的問題
- LeetCode BFS題目以及要注意的點LeetCode
- Redis的問題?這是一個很好的起點。Redis
- YUI的一點問題UI
- K個節點翻轉連結串列
- LeetCode每日一題: 階乘後的零(No.172)LeetCode每日一題
- LeetCode每日一題: 移動零(No.283)LeetCode每日一題