最接近原点的K个点
给定一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点,并且是一个整数 k ,返回离原点 (0,0) 最近的 k 个点。
这里,平面上两点之间的距离是 欧几里德距离( √(x1 - x2)2 + (y1 - y2)2 )。
你可以按 任何顺序 返回答案。除了点坐标的顺序之外,答案 确保 是 唯一 的。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/k-closest-points-to-origin
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
代码
code
class Solution {
public int[][] kClosest(int[][] points, int K) {
HashMap<Integer,Double> map=new HashMap<>();
for(int i=0;i<points.length;i++){
map.put(i,Math.sqrt(Math.pow(points[i][0],2)+Math.pow(points[i][1],2)));
}
ArrayList<Map.Entry<Integer,Double>> arrayList=new ArrayList<>(map.entrySet());
Collections.sort(arrayList,((o1, o2) -> o1.getValue().compareTo(o2.getValue())));
int[][] a=new int[K][2];
for(int i=0;i<arrayList.size();i++){
a[i][0]=points[arrayList.get(i).getKey()][0];
a[i][1]=points[arrayList.get(i).getKey()][1];
K--;
if(K==0){
return a;
}
}
return null;
}
}
二进制求和
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
代码
class Solution {
public String addBinary(String a, String b) {
StringBuilder res = new StringBuilder();
int i = a.length() - 1;
int j = b.length() - 1;
int cy = 0;
while (i >= 0 || j >=0 || cy!=0){
int digitA = i >=0 ? a.charAt(i) - '0' :0; // A位置值
int digitB = j >=0 ? b.charAt(j) - '0':0; // B位置值
int sum = digitA + digitB + cy; //当前位置的和
cy = sum >= 2 ? 1:0; // 向下进位
sum = sum >=2 ? sum-2:sum;
res.append(sum);
i--;
j--;
}
return res.reverse().toString();
}
}
3 条评论
|´・ω・)ノ
好好學習,天天向上。
前来游玩