• 【LeetCode】刷题日记02


    最小差

    给定两个整数数组ab,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差。

    //利用双指针的方法
    var smallestDifference = function(a, b) {
        //先给两个数组排序
        a.sort((a,b) => a-b);
        b.sort((a,b) => a-b);
        //2147483647是题目给出的数组项最大值,方便与后面的值比较取小
        let i = 0, j = 0, min = 2147483647;
        while (i < a.length && j < b.length) {
            if (a[i] < b[j] && i < a.length) {
                min = Math.min(b[j] - a[i], min);
                i++;
            } else if (a[i] < b[j]) {
                min = Math.min(b[j] - a[i], min);
                //这种情况表示的是a数组的指针已经指向了最后一位,只能移动b的指针
                j++;
            }  else if (j < b.length) {
                min = Math.min(a[i] - b[j], min);
                j++;
            } else {
                min = Math.min(a[i] - b[j], min);
                i++;
            }
        }
        return min;
    };

    盛最多水的容器

    var maxArea = function(height) {
        let left = 0;
        let right = height.length - 1;
        let max = 0;
        while(left < right) {
            const area = (right - left) * Math.min(height[right], height[left]);
            if (area > max) {
                max = area
            }
            if (height[left] < height[right]) {
                const lastLeft = height[left];
                left++;
                while(height[left] <= lastLeft && left < right) {
                    left++;
                }
            } else {
                const lastRight = height[right];
                right--;
                while(lastRight >= height[right] && left < right) {
                    right--;
                }
            }
        }
        return max;
    };
  • 相关阅读:
    关于HTTP协议,一篇就够了
    jvm在什么情况下会执行GC
    为什么我们做分布式使用Redis?
    linux入门系列
    linux学习笔记-13.进程控制
    linux学习笔记-12.输入输出重定向及管道
    app获取自己的签名
    安卓给微信公众号发消息
    微信扫码下载apk
    设备通道开启关闭状态
  • 原文地址:https://www.cnblogs.com/hermionepeng/p/13261296.html
Copyright © 2020-2023  润新知