【LeetCode系列】:编程能力提升(3)

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。【LeetCode系列】:编程能力提升(3),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

🍀条件语句

题目链接:
T1:976. 三角形的最大周长
T2:1779. 找到最近的有相同 X 或 Y 坐标的点

T1:三角形的最大周长

📚题目详情

fvfg

💡解题思路

在这里插入图片描述

🔑源代码

class Solution {
    public int largestPerimeter(int[] nums) {
        Arrays.sort(nums);
        for(int i=nums.length-1;i>=2;i--){
            if(nums[i-2]+nums[i-1]>nums[i]){
                return nums[i-2]+nums[i-1]+nums[i];
            }
        }
        return 0;
    }
}

T2:找到最近的有相同 X 或 Y 坐标的点

📚题目详情

在这里插入图片描述

💡解题思路

将min设置为一个足够大的值,设置index为-1,然后for循环所有的points数组里面的点,计算每个有效点p到点(x,y)的manhattan距离,跟minManhattanDist(初始化为Integer.MAX_VALUE)比较,如果比minManhattanDist当前的值小,就更新minManhattanDist的值,同时保存index值(初始化为-1)。循环完毕index的值即为符合条件的最小下标值。有效点判断也很简单,只要p[0] == x 或者p[1] == y即可。

🔑源代码

class Solution {
    public int nearestValidPoint(int x, int y, int[][] points) {
        int min = Integer.MAX_VALUE;
        int index = -1;
        for(int i=0,j=0;i<points.length;i++){
            int x1 = points[i][0];
            int y1 = points[i][1];
            if(x==points[i][0]||y==points[i][1]){
                int dis = Math.abs(x1 - x) + Math.abs(y1 - y);
                if(dis < min){
                    min = dis;
                    index = i;
                }
            }
        }
        return index;
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/199754.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!