티스토리 뷰
leetcode.com/problems/k-closest-points-to-origin/submissions/
좌표를 가진 배열(points)과 반환 해야 되는 갯수(k)를 파라미터로 넘겨받는다.
좌표와 원점(0, 0) 사이의 거리가 가장 가까운 좌표를 반환시킨다.
√(x₁ - x₂)² + (y₁ - y₂)² 유클리디안 계산법으로 계산한다.
튜플 형태의 check 벡터를 생성하여 좌표의 절대값을 구하여 계산 후 결과와 원본 좌표를 push한다.
모든 좌표에 대한 계산이 끝난 후 원점에서 가장 가까운 좌표를 k개만큼 answer벡터에 push하여 반환한다.
Time Complexity : O(n)
Space Complexity : O(n)
impl Solution {
pub fn k_closest(points: Vec<Vec<i32>>, mut k: i32) -> Vec<Vec<i32>> {
let mut answer = Vec::new();
if k == 0 { return answer; }
let mut check = Vec::new();
for i in 0..points.len(){
let (mut x, mut y) = (0, 0);
if points[i][0] < 0 { x = -points[i][0]; }
else { x = points[i][0]; }
if points[i][1] < 0 { y = -points[i][1]; }
else { y = points[i][1]; }
let result = x.pow(2) + y.pow(2);
check.push((result, vec![points[i][0], points[i][1]]));
}
check.sort();
for i in 0..k{
answer.push(check[i as usize].1.to_owned());
}
answer
}
}
'알고리즘 문제 풀이' 카테고리의 다른 글
[알고리즘문제] 릿코드 Is Subsequence (0) | 2021.05.18 |
---|---|
[알고리즘문제] 릿코드 Maximum Subarray(시간초과, dfs) (0) | 2021.05.18 |
[알고리즘문제] 릿코드 Intersection of Two Arrays (0) | 2021.05.12 |
[알고리즘문제] 릿코드 Valid Anagram (0) | 2021.05.12 |
[알고리즘문제] 릿코드 Merge Intervals (0) | 2021.05.12 |