最接近原点的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();
    }
}

END

有问题请联系feinan6666@outlook.com

本文作者:
文章标题: [02]近期LeetCode错题整理
本文地址:https://home.cnboy.top/89.html
版权说明:若无注明,本文皆神码人の世界原创,转载请保留文章出处。
最后修改:2022 年 03 月 24 日 07 : 16 PM
如果觉得我的文章对你有用,请随意赞赏